#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

Reply via email to