#defines on common words like "close" in includes pollute the users namespace.
------------------------------------------------------------------------------
Key: CAROB-140
URL: https://forge.continuent.org/jira/browse/CAROB-140
Project: Carob
Type: Improvement
Components: C++ API
Versions: Carob 0.7.4
Reporter: Gabor Szokoli
Assigned to: Gilles Rayrat
Priority: Trivial
Our C++ programmers voiced strong vulgarities after including some carob
headers in our code and finding out that the reason of barely comprehensible
compilation errors was the precompiler substituting common words like "Close",
"Commit" and "Begin" with numbers.
Here's what I did on the headers relevant to us:
sed "s/#define \(\S\S*\)\s\s*\(\S\S*\)$/const static int \1 = \2;/"
(I had to emulate the + regexp operator which did not work for some reason I
had no time or need to investigate)
Here's the diff on Connection.hpp:
< #define ControllerPrompt 0x1FA1501F
---
> const static int ControllerPrompt = 0x1FA1501F;
44c44
< #define CommandPrefix 0xB015CA
---
> const static int CommandPrefix = 0xB015CA;
46,67c46,67
< #define Ping -1
< #define StatementExecuteQuery 0
< #define StatementExecuteUpdate 1
< #define StatementExecuteUpdateWithKeys 2
< //#define CallableStatementExecuteQuery 3
< //#define CallableStatementExecuteUpdate 4
< //#define CallableStatementExecute 5
< #define RetrieveExecuteQueryResult 10
< #define RetrieveExecuteUpdateResult 11
< #define RetrieveExecuteResult 12
< #define RetrieveExecuteUpdateWithKeysResult 13
< #define RetrieveCommitResult 14
< #define RetrieveRollbackResult 15
< #define StatementExecute 6
< #define Begin 20
< #define Commit 21
< #define Rollback 22
< //#define SetNamedSavepoint 23
< //#define SetUnnamedSavepoint 24
< //#define ReleaseSavepoint 25
< //#define RollbackToSavepoint 26
< #define Close 30
---
> const static int Ping = -1;
> const static int StatementExecuteQuery = 0;
> const static int StatementExecuteUpdate = 1;
> const static int StatementExecuteUpdateWithKeys = 2;
> //const static int CallableStatementExecuteQuery = 3;
> //const static int CallableStatementExecuteUpdate = 4;
> //const static int CallableStatementExecute = 5;
> const static int RetrieveExecuteQueryResult = 10;
> const static int RetrieveExecuteUpdateResult = 11;
> const static int RetrieveExecuteResult = 12;
> const static int RetrieveExecuteUpdateWithKeysResult = 13;
> const static int RetrieveCommitResult = 14;
> const static int RetrieveRollbackResult = 15;
> const static int StatementExecute = 6;
> const static int Begin = 20;
> const static int Commit = 21;
> const static int Rollback = 22;
> //const static int SetNamedSavepoint = 23;
> //const static int SetUnnamedSavepoint = 24;
> //const static int ReleaseSavepoint = 25;
> //const static int RollbackToSavepoint = 26;
> const static int Close = 30;
69,72c69,72
< //#define Reset 31
< #define FetchNextResultSetRows 32
< #define CloseRemoteResultSet 33
< #define RestoreConnectionState 34
---
> //const static int Reset = 31;
> const static int FetchNextResultSetRows = 32;
> const static int CloseRemoteResultSet = 33;
> const static int RestoreConnectionState = 34;
75,106c75,106
< //#define ConnectionGetCatalog 36
< //#define ConnectionGetCatalogs 37
< //#define ConnectionSetCatalog 38
< //#define SetTransactionIsolation 39
< #define ConnectionGetWarnings 40
< #define ConnectionClearWarnings 41
< #define SetReadOnly 42
< //#define GetVirtualDatabaseName 50
< //#define GetControllerVersionNumber 51
< //#define DatabaseMetaDataGetTables 52
< //#define DatabaseMetaDataGetColumns 53
< //#define DatabaseMetaDataGetPrimaryKeys 54
< //#define DatabaseMetaDataGetProcedures 55
< //#define DatabaseMetaDataGetProcedureColumns 56
< //#define DatabaseMetaDataGetTableTypes 58
< //#define DatabaseMetaDataGetTablePrivileges 59
< //#define DatabaseMetaDataGetSchemas 60
< //#define DatabaseMetaDataGetDatabaseProductName 61
< //#define DatabaseMetaDataGetAttributes 62
< //#define DatabaseMetaDataGetBestRowIdentifier 63
< //#define DatabaseMetaDataGetColumnPrivileges 64
< //#define DatabaseMetaDataGetCrossReference 65
< //#define DatabaseMetaDataGetExportedKeys 66
< //#define DatabaseMetaDataGetImportedKeys 67
< //#define DatabaseMetaDataGetIndexInfo 68
< //#define DatabaseMetaDataGetSuperTables 69
< //#define DatabaseMetaDataGetSuperTypes 70
< //#define DatabaseMetaDataGetTypeInfo 71
< //#define DatabaseMetaDataGetUDTs 72
< //#define DatabaseMetaDataGetVersionColumns 73
< //#define DatabaseStaticMetadata 80
< #define PreparedStatementGetMetaData 81
---
> //const static int ConnectionGetCatalog = 36;
> //const static int ConnectionGetCatalogs = 37;
> //const static int ConnectionSetCatalog = 38;
> //const static int SetTransactionIsolation = 39;
> const static int ConnectionGetWarnings = 40;
> const static int ConnectionClearWarnings = 41;
> const static int SetReadOnly = 42;
> //const static int GetVirtualDatabaseName = 50;
> //const static int GetControllerVersionNumber = 51;
> //const static int DatabaseMetaDataGetTables = 52;
> //const static int DatabaseMetaDataGetColumns = 53;
> //const static int DatabaseMetaDataGetPrimaryKeys = 54;
> //const static int DatabaseMetaDataGetProcedures = 55;
> //const static int DatabaseMetaDataGetProcedureColumns = 56;
> //const static int DatabaseMetaDataGetTableTypes = 58;
> //const static int DatabaseMetaDataGetTablePrivileges = 59;
> //const static int DatabaseMetaDataGetSchemas = 60;
> //const static int DatabaseMetaDataGetDatabaseProductName = 61;
> //const static int DatabaseMetaDataGetAttributes = 62;
> //const static int DatabaseMetaDataGetBestRowIdentifier = 63;
> //const static int DatabaseMetaDataGetColumnPrivileges = 64;
> //const static int DatabaseMetaDataGetCrossReference = 65;
> //const static int DatabaseMetaDataGetExportedKeys = 66;
> //const static int DatabaseMetaDataGetImportedKeys = 67;
> //const static int DatabaseMetaDataGetIndexInfo = 68;
> //const static int DatabaseMetaDataGetSuperTables = 69;
> //const static int DatabaseMetaDataGetSuperTypes = 70;
> //const static int DatabaseMetaDataGetTypeInfo = 71;
> //const static int DatabaseMetaDataGetUDTs = 72;
> //const static int DatabaseMetaDataGetVersionColumns = 73;
> //const static int DatabaseStaticMetadata = 80;
> const static int PreparedStatementGetMetaData = 81;
And on ResultSetMetaData.hpp:
34c34
< #define columnNoNulls 0
---
> const static int columnNoNulls = 0;
39c39
< #define columnNullable 1
---
> const static int columnNullable = 1;
44c44
< #define columnNullableUnknown 2
---
> const static int columnNullableUnknown = 2;
Tests still compile, the ones that do not need a controller set up run fine.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://forge.continuent.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
_______________________________________________
Carob mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob