LCOV - code coverage report
Current view: top level - usr/include - sql.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 21 56 37.5 %
Date: 2021-10-13 02:24:04 Functions: 21 56 37.5 %

          Line data    Source code
       1             : /**************************************************
       2             :  * sql.h
       3             :  *
       4             :  * These should be consistent with the MS version.
       5             :  *
       6             :  **************************************************/
       7             : #ifndef __SQL_H
       8             : #define __SQL_H
       9             : 
      10             : 
      11             : /****************************
      12             :  * default to 3.51 declare something else before here and you get a whole new ball of wax
      13             :  ***************************/
      14             : #ifndef ODBCVER
      15             : #define ODBCVER 0x0380
      16             : #endif
      17             : 
      18             : #ifndef __SQLTYPES_H
      19             : #include "sqltypes.h"
      20             : #endif
      21             : 
      22             : #ifdef __cplusplus
      23             : extern "C" {
      24             : #endif
      25             : 
      26             : /****************************
      27             :  * some ret values
      28             :  ***************************/
      29             : #define SQL_NULL_DATA             (-1)
      30             : #define SQL_DATA_AT_EXEC          (-2)
      31             : #define SQL_SUCCESS                0
      32             : #define SQL_SUCCESS_WITH_INFO      1
      33             : #if (ODBCVER >= 0x0300)
      34             : #define SQL_NO_DATA              100
      35             : #endif
      36             : #define SQL_ERROR                 (-1)
      37             : #define SQL_INVALID_HANDLE        (-2)
      38             : #define SQL_STILL_EXECUTING        2
      39             : #define SQL_NEED_DATA             99
      40             : #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
      41             : 
      42             : #if (ODBCVER >= 0x0380)
      43             : #define SQL_PARAM_DATA_AVAILABLE    101  
      44             : #endif
      45             : 
      46             : /****************************
      47             :  * use these to indicate string termination to some function
      48             :  ***************************/
      49             : #define SQL_NTS                   (-3)
      50             : #define SQL_NTSL                  (-3L)
      51             : 
      52             : /* maximum message length */
      53             : #define SQL_MAX_MESSAGE_LENGTH   512
      54             : 
      55             : /* date/time length constants */
      56             : #if (ODBCVER >= 0x0300)
      57             : #define SQL_DATE_LEN           10
      58             : #define SQL_TIME_LEN            8  /* add P+1 if precision is nonzero */
      59             : #define SQL_TIMESTAMP_LEN      19  /* add P+1 if precision is nonzero */
      60             : #endif
      61             : 
      62             : /* handle type identifiers */
      63             : #if (ODBCVER >= 0x0300)
      64             : #define SQL_HANDLE_ENV             1
      65             : #define SQL_HANDLE_DBC             2
      66             : #define SQL_HANDLE_STMT            3
      67             : #define SQL_HANDLE_DESC            4
      68             : #endif
      69             : 
      70             : /* environment attribute */
      71             : #if (ODBCVER >= 0x0300)
      72             : #define SQL_ATTR_OUTPUT_NTS    10001
      73             : #endif
      74             : 
      75             : /* connection attributes */
      76             : #if (ODBCVER >= 0x0300)
      77             : #define SQL_ATTR_AUTO_IPD      10001
      78             : #define SQL_ATTR_METADATA_ID   10014
      79             : #endif  /* ODBCVER >= 0x0300 */
      80             : 
      81             : /* statement attributes */
      82             : #if (ODBCVER >= 0x0300)
      83             : #define SQL_ATTR_APP_ROW_DESC       10010
      84             : #define SQL_ATTR_APP_PARAM_DESC     10011
      85             : #define SQL_ATTR_IMP_ROW_DESC       10012
      86             : #define SQL_ATTR_IMP_PARAM_DESC     10013
      87             : #define SQL_ATTR_CURSOR_SCROLLABLE  (-1)
      88             : #define SQL_ATTR_CURSOR_SENSITIVITY (-2)
      89             : #endif
      90             : 
      91             : /* SQL_ATTR_CURSOR_SCROLLABLE values */
      92             : #if (ODBCVER >= 0x0300)
      93             : #define SQL_NONSCROLLABLE                       0
      94             : #define SQL_SCROLLABLE                          1
      95             : #endif  /* ODBCVER >= 0x0300 */
      96             : 
      97             : /* identifiers of fields in the SQL descriptor */
      98             : #if (ODBCVER >= 0x0300)
      99             : #define SQL_DESC_COUNT                  1001
     100             : #define SQL_DESC_TYPE                   1002
     101             : #define SQL_DESC_LENGTH                 1003
     102             : #define SQL_DESC_OCTET_LENGTH_PTR       1004
     103             : #define SQL_DESC_PRECISION              1005
     104             : #define SQL_DESC_SCALE                  1006
     105             : #define SQL_DESC_DATETIME_INTERVAL_CODE 1007
     106             : #define SQL_DESC_NULLABLE               1008
     107             : #define SQL_DESC_INDICATOR_PTR          1009
     108             : #define SQL_DESC_DATA_PTR               1010
     109             : #define SQL_DESC_NAME                   1011
     110             : #define SQL_DESC_UNNAMED                1012
     111             : #define SQL_DESC_OCTET_LENGTH           1013
     112             : #define SQL_DESC_ALLOC_TYPE             1099
     113             : #endif
     114             : 
     115             : /* identifiers of fields in the diagnostics area */
     116             : #if (ODBCVER >= 0x0300)
     117             : #define SQL_DIAG_RETURNCODE        1
     118             : #define SQL_DIAG_NUMBER            2
     119             : #define SQL_DIAG_ROW_COUNT         3
     120             : #define SQL_DIAG_SQLSTATE          4
     121             : #define SQL_DIAG_NATIVE            5
     122             : #define SQL_DIAG_MESSAGE_TEXT      6
     123             : #define SQL_DIAG_DYNAMIC_FUNCTION  7
     124             : #define SQL_DIAG_CLASS_ORIGIN      8
     125             : #define SQL_DIAG_SUBCLASS_ORIGIN   9
     126             : #define SQL_DIAG_CONNECTION_NAME  10
     127             : #define SQL_DIAG_SERVER_NAME      11
     128             : #define SQL_DIAG_DYNAMIC_FUNCTION_CODE 12
     129             : #endif
     130             : 
     131             : /* dynamic function codes */
     132             : #if (ODBCVER >= 0x0300)
     133             : #define SQL_DIAG_ALTER_DOMAIN                   3
     134             : #define SQL_DIAG_ALTER_TABLE            4
     135             : #define SQL_DIAG_CALL                                   7
     136             : #define SQL_DIAG_CREATE_ASSERTION               6
     137             : #define SQL_DIAG_CREATE_CHARACTER_SET   8
     138             : #define SQL_DIAG_CREATE_COLLATION               10
     139             : #define SQL_DIAG_CREATE_DOMAIN                  23
     140             : #define SQL_DIAG_CREATE_INDEX          (-1)
     141             : #define SQL_DIAG_CREATE_SCHEMA                  64
     142             : #define SQL_DIAG_CREATE_TABLE          77
     143             : #define SQL_DIAG_CREATE_TRANSLATION             79
     144             : #define SQL_DIAG_CREATE_VIEW           84
     145             : #define SQL_DIAG_DELETE_WHERE          19
     146             : #define SQL_DIAG_DROP_ASSERTION                 24
     147             : #define SQL_DIAG_DROP_CHARACTER_SET             25
     148             : #define SQL_DIAG_DROP_COLLATION                 26
     149             : #define SQL_DIAG_DROP_DOMAIN                    27
     150             : #define SQL_DIAG_DROP_INDEX            (-2)
     151             : #define SQL_DIAG_DROP_SCHEMA                    31
     152             : #define SQL_DIAG_DROP_TABLE            32
     153             : #define SQL_DIAG_DROP_TRANSLATION      33
     154             : #define SQL_DIAG_DROP_VIEW             36
     155             : #define SQL_DIAG_DYNAMIC_DELETE_CURSOR 38
     156             : #define SQL_DIAG_DYNAMIC_UPDATE_CURSOR 81
     157             : #define SQL_DIAG_GRANT                 48
     158             : #define SQL_DIAG_INSERT                50
     159             : #define SQL_DIAG_REVOKE                59
     160             : #define SQL_DIAG_SELECT_CURSOR         85
     161             : #define SQL_DIAG_UNKNOWN_STATEMENT      0
     162             : #define SQL_DIAG_UPDATE_WHERE          82
     163             : #endif  /* ODBCVER >= 0x0300 */
     164             : 
     165             : /* SQL data type codes */
     166             : #define SQL_UNKNOWN_TYPE        0
     167             : #define SQL_CHAR            1
     168             : #define SQL_NUMERIC         2
     169             : #define SQL_DECIMAL         3
     170             : #define SQL_INTEGER         4
     171             : #define SQL_SMALLINT        5
     172             : #define SQL_FLOAT           6
     173             : #define SQL_REAL            7
     174             : #define SQL_DOUBLE          8
     175             : #if (ODBCVER >= 0x0300)
     176             : #define SQL_DATETIME        9
     177             : #endif
     178             : #define SQL_VARCHAR        12
     179             : 
     180             : /* One-parameter shortcuts for date/time data types */
     181             : #if (ODBCVER >= 0x0300)
     182             : #define SQL_TYPE_DATE      91
     183             : #define SQL_TYPE_TIME      92
     184             : #define SQL_TYPE_TIMESTAMP 93
     185             : #endif
     186             : 
     187             : /* Statement attribute values for cursor sensitivity */
     188             : #if (ODBCVER >= 0x0300)
     189             : #define SQL_UNSPECIFIED     0
     190             : #define SQL_INSENSITIVE     1
     191             : #define SQL_SENSITIVE       2
     192             : #endif
     193             : 
     194             : /* GetTypeInfo() request for all data types */
     195             : #define SQL_ALL_TYPES       0
     196             : 
     197             : /* Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData() */
     198             : #if (ODBCVER >= 0x0300)
     199             : #define SQL_DEFAULT        99
     200             : #endif
     201             : 
     202             : /* SQLGetData() code indicating that the application row descriptor
     203             :  * specifies the data type
     204             :  */
     205             : #if (ODBCVER >= 0x0300)
     206             : #define SQL_ARD_TYPE      (-99)
     207             : #endif
     208             : 
     209             : /* SQL date/time type subcodes */
     210             : #if (ODBCVER >= 0x0300)
     211             : #define SQL_CODE_DATE       1
     212             : #define SQL_CODE_TIME       2
     213             : #define SQL_CODE_TIMESTAMP  3
     214             : #endif
     215             : 
     216             : /* CLI option values */
     217             : #if (ODBCVER >= 0x0300)
     218             : #define SQL_FALSE           0
     219             : #define SQL_TRUE            1
     220             : #endif
     221             : 
     222             : /* values of NULLABLE field in descriptor */
     223             : #define SQL_NO_NULLS        0
     224             : #define SQL_NULLABLE        1
     225             : 
     226             : /* Value returned by SQLGetTypeInfo() to denote that it is
     227             :  * not known whether or not a data type supports null values.
     228             :  */
     229             : #define SQL_NULLABLE_UNKNOWN  2
     230             : 
     231             : /* Values returned by SQLGetTypeInfo() to show WHERE clause
     232             :  * supported
     233             :  */
     234             : #if (ODBCVER >= 0x0300)
     235             : #define SQL_PRED_NONE     0
     236             : #define SQL_PRED_CHAR     1
     237             : #define SQL_PRED_BASIC    2
     238             : #endif
     239             : 
     240             : /* values of UNNAMED field in descriptor */
     241             : #if (ODBCVER >= 0x0300)
     242             : #define SQL_NAMED           0
     243             : #define SQL_UNNAMED         1
     244             : #endif
     245             : 
     246             : /* values of ALLOC_TYPE field in descriptor */
     247             : #if (ODBCVER >= 0x0300)
     248             : #define SQL_DESC_ALLOC_AUTO 1
     249             : #define SQL_DESC_ALLOC_USER 2
     250             : #endif
     251             : 
     252             : /* FreeStmt() options */
     253             : #define SQL_CLOSE           0
     254             : #define SQL_DROP            1
     255             : #define SQL_UNBIND          2
     256             : #define SQL_RESET_PARAMS    3
     257             : 
     258             : /* Codes used for FetchOrientation in SQLFetchScroll(),
     259             :    and in SQLDataSources()
     260             : */
     261             : #define SQL_FETCH_NEXT      1
     262             : #define SQL_FETCH_FIRST     2
     263             : 
     264             : /* Other codes used for FetchOrientation in SQLFetchScroll() */
     265             : #define SQL_FETCH_LAST      3
     266             : #define SQL_FETCH_PRIOR     4
     267             : #define SQL_FETCH_ABSOLUTE  5
     268             : #define SQL_FETCH_RELATIVE  6
     269             : 
     270             : /* SQLEndTran() options */
     271             : #define SQL_COMMIT          0
     272             : #define SQL_ROLLBACK        1
     273             : 
     274             : /* null handles returned by SQLAllocHandle() */
     275             : #define SQL_NULL_HENV       0
     276             : #define SQL_NULL_HDBC       0
     277             : #define SQL_NULL_HSTMT      0
     278             : #if (ODBCVER >= 0x0300)
     279             : #define SQL_NULL_HDESC      0
     280             : #define SQL_NULL_DESC       0
     281             : #endif
     282             : 
     283             : /* null handle used in place of parent handle when allocating HENV */
     284             : #if (ODBCVER >= 0x0300)
     285             : #define SQL_NULL_HANDLE     0L
     286             : #endif
     287             : 
     288             : /* Values that may appear in the result set of SQLSpecialColumns() */
     289             : #define SQL_SCOPE_CURROW    0
     290             : #define SQL_SCOPE_TRANSACTION 1
     291             : #define SQL_SCOPE_SESSION   2
     292             : 
     293             : #define SQL_PC_UNKNOWN      0
     294             : #if (ODBCVER >= 0x0300)
     295             : #define SQL_PC_NON_PSEUDO   1
     296             : #endif
     297             : #define SQL_PC_PSEUDO       2
     298             : 
     299             : /* Reserved value for the IdentifierType argument of SQLSpecialColumns() */
     300             : #if (ODBCVER >= 0x0300)
     301             : #define SQL_ROW_IDENTIFIER  1
     302             : #endif
     303             : 
     304             : /* Reserved values for UNIQUE argument of SQLStatistics() */
     305             : #define SQL_INDEX_UNIQUE    0
     306             : #define SQL_INDEX_ALL       1
     307             : 
     308             : /* Values that may appear in the result set of SQLStatistics() */
     309             : #define SQL_INDEX_CLUSTERED 1
     310             : #define SQL_INDEX_HASHED    2
     311             : #define SQL_INDEX_OTHER     3
     312             : 
     313             : /* SQLGetFunctions() values to identify ODBC APIs */
     314             : #define SQL_API_SQLALLOCCONNECT         1
     315             : #define SQL_API_SQLALLOCENV             2
     316             : #if (ODBCVER >= 0x0300)
     317             : #define SQL_API_SQLALLOCHANDLE       1001
     318             : #endif
     319             : #define SQL_API_SQLALLOCSTMT            3
     320             : #define SQL_API_SQLBINDCOL              4
     321             : #if (ODBCVER >= 0x0300)
     322             : #define SQL_API_SQLBINDPARAM         1002
     323             : #endif
     324             : #define SQL_API_SQLCANCEL               5
     325             : #if (ODBCVER >= 0x0300)
     326             : #define SQL_API_SQLCLOSECURSOR       1003
     327             : #define SQL_API_SQLCOLATTRIBUTE         6
     328             : #endif
     329             : #define SQL_API_SQLCOLUMNS             40
     330             : #define SQL_API_SQLCONNECT              7
     331             : #if (ODBCVER >= 0x0300)
     332             : #define SQL_API_SQLCOPYDESC          1004
     333             : #endif
     334             : #define SQL_API_SQLDATASOURCES         57
     335             : #define SQL_API_SQLDESCRIBECOL          8
     336             : #define SQL_API_SQLDISCONNECT           9
     337             : #if (ODBCVER >= 0x0300)
     338             : #define SQL_API_SQLENDTRAN           1005
     339             : #endif
     340             : #define SQL_API_SQLERROR               10
     341             : #define SQL_API_SQLEXECDIRECT          11
     342             : #define SQL_API_SQLEXECUTE             12
     343             : #define SQL_API_SQLFETCH               13
     344             : #if (ODBCVER >= 0x0300)
     345             : #define SQL_API_SQLFETCHSCROLL       1021
     346             : #endif
     347             : #define SQL_API_SQLFREECONNECT         14
     348             : #define SQL_API_SQLFREEENV             15
     349             : #if (ODBCVER >= 0x0300)
     350             : #define SQL_API_SQLFREEHANDLE        1006
     351             : #endif
     352             : #define SQL_API_SQLFREESTMT            16
     353             : #if (ODBCVER >= 0x0300)
     354             : #define SQL_API_SQLGETCONNECTATTR    1007
     355             : #endif
     356             : #define SQL_API_SQLGETCONNECTOPTION    42
     357             : #define SQL_API_SQLGETCURSORNAME       17
     358             : #define SQL_API_SQLGETDATA             43
     359             : #if (ODBCVER >= 0x0300)
     360             : #define SQL_API_SQLGETDESCFIELD      1008
     361             : #define SQL_API_SQLGETDESCREC        1009
     362             : #define SQL_API_SQLGETDIAGFIELD      1010
     363             : #define SQL_API_SQLGETDIAGREC        1011
     364             : #define SQL_API_SQLGETENVATTR        1012
     365             : #endif
     366             : #define SQL_API_SQLGETFUNCTIONS        44
     367             : #define SQL_API_SQLGETINFO             45
     368             : #if (ODBCVER >= 0x0300)
     369             : #define SQL_API_SQLGETSTMTATTR       1014
     370             : #endif
     371             : #define SQL_API_SQLGETSTMTOPTION       46
     372             : #define SQL_API_SQLGETTYPEINFO         47
     373             : #define SQL_API_SQLNUMRESULTCOLS       18
     374             : #define SQL_API_SQLPARAMDATA           48
     375             : #define SQL_API_SQLPREPARE             19
     376             : #define SQL_API_SQLPUTDATA             49
     377             : #define SQL_API_SQLROWCOUNT            20
     378             : #if (ODBCVER >= 0x0300)
     379             : #define SQL_API_SQLSETCONNECTATTR    1016
     380             : #endif
     381             : #define SQL_API_SQLSETCONNECTOPTION    50
     382             : #define SQL_API_SQLSETCURSORNAME       21
     383             : #if (ODBCVER >= 0x0300)
     384             : #define SQL_API_SQLSETDESCFIELD      1017
     385             : #define SQL_API_SQLSETDESCREC        1018
     386             : #define SQL_API_SQLSETENVATTR        1019
     387             : #endif
     388             : #define SQL_API_SQLSETPARAM            22
     389             : #if (ODBCVER >= 0x0300)
     390             : #define SQL_API_SQLSETSTMTATTR       1020
     391             : #endif
     392             : #define SQL_API_SQLSETSTMTOPTION       51
     393             : #define SQL_API_SQLSPECIALCOLUMNS      52
     394             : #define SQL_API_SQLSTATISTICS          53
     395             : #define SQL_API_SQLTABLES              54
     396             : #define SQL_API_SQLTRANSACT            23
     397             : 
     398             : #if (ODBCVER >= 0x0380)
     399             : #define SQL_API_SQLCANCELHANDLE      1022
     400             : #endif
     401             : 
     402             : /* Information requested by SQLGetInfo() */
     403             : #if (ODBCVER >= 0x0300)
     404             : #define SQL_MAX_DRIVER_CONNECTIONS           0
     405             : #define SQL_MAXIMUM_DRIVER_CONNECTIONS          SQL_MAX_DRIVER_CONNECTIONS
     406             : #define SQL_MAX_CONCURRENT_ACTIVITIES        1
     407             : #define SQL_MAXIMUM_CONCURRENT_ACTIVITIES       SQL_MAX_CONCURRENT_ACTIVITIES
     408             : #endif
     409             : #define SQL_DATA_SOURCE_NAME                 2
     410             : #define SQL_FETCH_DIRECTION                  8
     411             : #define SQL_SERVER_NAME                     13
     412             : #define SQL_SEARCH_PATTERN_ESCAPE           14
     413             : #define SQL_DBMS_NAME                       17
     414             : #define SQL_DBMS_VER                        18
     415             : #define SQL_ACCESSIBLE_TABLES               19
     416             : #define SQL_ACCESSIBLE_PROCEDURES               20
     417             : #define SQL_CURSOR_COMMIT_BEHAVIOR          23
     418             : #define SQL_DATA_SOURCE_READ_ONLY           25
     419             : #define SQL_DEFAULT_TXN_ISOLATION           26
     420             : #define SQL_IDENTIFIER_CASE                 28
     421             : #define SQL_IDENTIFIER_QUOTE_CHAR           29
     422             : #define SQL_MAX_COLUMN_NAME_LEN             30
     423             : #define SQL_MAXIMUM_COLUMN_NAME_LENGTH          SQL_MAX_COLUMN_NAME_LEN
     424             : #define SQL_MAX_CURSOR_NAME_LEN             31
     425             : #define SQL_MAXIMUM_CURSOR_NAME_LENGTH          SQL_MAX_CURSOR_NAME_LEN
     426             : #define SQL_MAX_SCHEMA_NAME_LEN             32
     427             : #define SQL_MAXIMUM_SCHEMA_NAME_LENGTH          SQL_MAX_SCHEMA_NAME_LEN
     428             : #define SQL_MAX_CATALOG_NAME_LEN            34
     429             : #define SQL_MAXIMUM_CATALOG_NAME_LENGTH         SQL_MAX_CATALOG_NAME_LEN
     430             : #define SQL_MAX_TABLE_NAME_LEN              35
     431             : #define SQL_SCROLL_CONCURRENCY              43
     432             : #define SQL_TXN_CAPABLE                     46
     433             : #define SQL_TRANSACTION_CAPABLE                         SQL_TXN_CAPABLE
     434             : #define SQL_USER_NAME                       47
     435             : #define SQL_TXN_ISOLATION_OPTION            72
     436             : #define SQL_TRANSACTION_ISOLATION_OPTION        SQL_TXN_ISOLATION_OPTION
     437             : #define SQL_INTEGRITY                       73
     438             : #define SQL_GETDATA_EXTENSIONS              81
     439             : #define SQL_NULL_COLLATION                  85
     440             : #define SQL_ALTER_TABLE                     86
     441             : #define SQL_ORDER_BY_COLUMNS_IN_SELECT      90
     442             : #define SQL_SPECIAL_CHARACTERS              94
     443             : #define SQL_MAX_COLUMNS_IN_GROUP_BY         97
     444             : #define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY         SQL_MAX_COLUMNS_IN_GROUP_BY
     445             : #define SQL_MAX_COLUMNS_IN_INDEX            98
     446             : #define SQL_MAXIMUM_COLUMNS_IN_INDEX            SQL_MAX_COLUMNS_IN_INDEX
     447             : #define SQL_MAX_COLUMNS_IN_ORDER_BY         99
     448             : #define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY         SQL_MAX_COLUMNS_IN_ORDER_BY
     449             : #define SQL_MAX_COLUMNS_IN_SELECT          100
     450             : #define SQL_MAXIMUM_COLUMNS_IN_SELECT      SQL_MAX_COLUMNS_IN_SELECT
     451             : #define SQL_MAX_COLUMNS_IN_TABLE           101
     452             : #define SQL_MAX_INDEX_SIZE                 102
     453             : #define SQL_MAXIMUM_INDEX_SIZE                     SQL_MAX_INDEX_SIZE
     454             : #define SQL_MAX_ROW_SIZE                   104
     455             : #define SQL_MAXIMUM_ROW_SIZE                       SQL_MAX_ROW_SIZE
     456             : #define SQL_MAX_STATEMENT_LEN              105
     457             : #define SQL_MAXIMUM_STATEMENT_LENGTH       SQL_MAX_STATEMENT_LEN
     458             : #define SQL_MAX_TABLES_IN_SELECT           106
     459             : #define SQL_MAXIMUM_TABLES_IN_SELECT       SQL_MAX_TABLES_IN_SELECT
     460             : #define SQL_MAX_USER_NAME_LEN              107
     461             : #define SQL_MAXIMUM_USER_NAME_LENGTH       SQL_MAX_USER_NAME_LEN
     462             : #if (ODBCVER >= 0x0300)
     463             : #define SQL_OJ_CAPABILITIES                115
     464             : #define SQL_OUTER_JOIN_CAPABILITIES                SQL_OJ_CAPABILITIES
     465             : #endif /* ODBCVER >= 0x0300 */
     466             : 
     467             : #if (ODBCVER >= 0x0300)
     468             : #define SQL_XOPEN_CLI_YEAR               10000
     469             : #define SQL_CURSOR_SENSITIVITY           10001
     470             : #define SQL_DESCRIBE_PARAMETER           10002
     471             : #define SQL_CATALOG_NAME                 10003
     472             : #define SQL_COLLATION_SEQ                10004
     473             : #define SQL_MAX_IDENTIFIER_LEN           10005
     474             : #define SQL_MAXIMUM_IDENTIFIER_LENGTH    SQL_MAX_IDENTIFIER_LEN
     475             : #endif /* ODBCVER >= 0x0300 */
     476             : 
     477             : /* SQL_ALTER_TABLE bitmasks */
     478             : #if (ODBCVER >= 0x0200)
     479             : #define SQL_AT_ADD_COLUMN                       0x00000001L
     480             : #define SQL_AT_DROP_COLUMN                      0x00000002L
     481             : #endif /* ODBCVER >= 0x0200 */
     482             : 
     483             : #if (ODBCVER >= 0x0300)
     484             : #define SQL_AT_ADD_CONSTRAINT                   0x00000008L
     485             : 
     486             : /* The following bitmasks are ODBC extensions and defined in sqlext.h
     487             : *#define        SQL_AT_COLUMN_SINGLE                                    0x00000020L     
     488             : *#define        SQL_AT_ADD_COLUMN_DEFAULT                               0x00000040L
     489             : *#define        SQL_AT_ADD_COLUMN_COLLATION                             0x00000080L
     490             : *#define        SQL_AT_SET_COLUMN_DEFAULT                               0x00000100L
     491             : *#define        SQL_AT_DROP_COLUMN_DEFAULT                              0x00000200L
     492             : *#define        SQL_AT_DROP_COLUMN_CASCADE                              0x00000400L
     493             : *#define        SQL_AT_DROP_COLUMN_RESTRICT                             0x00000800L
     494             : *#define SQL_AT_ADD_TABLE_CONSTRAINT                            0x00001000L             
     495             : *#define SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE           0x00002000L             
     496             : *#define SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT          0x00004000L             
     497             : *#define SQL_AT_CONSTRAINT_NAME_DEFINITION                      0x00008000L
     498             : *#define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED           0x00010000L
     499             : *#define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE          0x00020000L
     500             : *#define SQL_AT_CONSTRAINT_DEFERRABLE                           0x00040000L
     501             : *#define SQL_AT_CONSTRAINT_NON_DEFERRABLE                       0x00080000L
     502             : */
     503             : #endif  /* ODBCVER >= 0x0300 */
     504             : 
     505             : 
     506             : /* SQL_ASYNC_MODE values */
     507             : #if (ODBCVER >= 0x0300)
     508             : #define SQL_AM_NONE                         0
     509             : #define SQL_AM_CONNECTION                   1
     510             : #define SQL_AM_STATEMENT                    2
     511             : #endif
     512             : 
     513             : /* SQL_CURSOR_COMMIT_BEHAVIOR values */
     514             : #define SQL_CB_DELETE                       0
     515             : #define SQL_CB_CLOSE                        1
     516             : #define SQL_CB_PRESERVE                     2
     517             : 
     518             : /* SQL_FETCH_DIRECTION bitmasks */
     519             : #define SQL_FD_FETCH_NEXT                   0x00000001L
     520             : #define SQL_FD_FETCH_FIRST                  0x00000002L
     521             : #define SQL_FD_FETCH_LAST                   0x00000004L
     522             : #define SQL_FD_FETCH_PRIOR                  0x00000008L
     523             : #define SQL_FD_FETCH_ABSOLUTE               0x00000010L
     524             : #define SQL_FD_FETCH_RELATIVE               0x00000020L
     525             : 
     526             : /* SQL_GETDATA_EXTENSIONS bitmasks */
     527             : #define SQL_GD_ANY_COLUMN                   0x00000001L
     528             : #define SQL_GD_ANY_ORDER                    0x00000002L
     529             : 
     530             : /* SQL_IDENTIFIER_CASE values */
     531             : #define SQL_IC_UPPER                        1
     532             : #define SQL_IC_LOWER                        2
     533             : #define SQL_IC_SENSITIVE                    3
     534             : #define SQL_IC_MIXED                        4
     535             : 
     536             : /* SQL_OJ_CAPABILITIES bitmasks */
     537             : /* NB: this means 'outer join', not what  you may be thinking */
     538             : 
     539             : 
     540             : #if (ODBCVER >= 0x0201)
     541             : #define SQL_OJ_LEFT                         0x00000001L
     542             : #define SQL_OJ_RIGHT                        0x00000002L
     543             : #define SQL_OJ_FULL                         0x00000004L
     544             : #define SQL_OJ_NESTED                       0x00000008L
     545             : #define SQL_OJ_NOT_ORDERED                  0x00000010L
     546             : #define SQL_OJ_INNER                        0x00000020L
     547             : #define SQL_OJ_ALL_COMPARISON_OPS           0x00000040L
     548             : #endif
     549             : 
     550             : /* SQL_SCROLL_CONCURRENCY bitmasks */
     551             : #define SQL_SCCO_READ_ONLY                  0x00000001L
     552             : #define SQL_SCCO_LOCK                       0x00000002L
     553             : #define SQL_SCCO_OPT_ROWVER                 0x00000004L
     554             : #define SQL_SCCO_OPT_VALUES                 0x00000008L
     555             : 
     556             : /* SQL_TXN_CAPABLE values */
     557             : #define SQL_TC_NONE                         0
     558             : #define SQL_TC_DML                          1
     559             : #define SQL_TC_ALL                          2
     560             : #define SQL_TC_DDL_COMMIT                   3
     561             : #define SQL_TC_DDL_IGNORE                   4
     562             : 
     563             : /* SQL_TXN_ISOLATION_OPTION bitmasks */
     564             : #define SQL_TXN_READ_UNCOMMITTED            0x00000001L
     565             : #define SQL_TRANSACTION_READ_UNCOMMITTED        SQL_TXN_READ_UNCOMMITTED
     566             : #define SQL_TXN_READ_COMMITTED              0x00000002L
     567             : #define SQL_TRANSACTION_READ_COMMITTED          SQL_TXN_READ_COMMITTED
     568             : #define SQL_TXN_REPEATABLE_READ             0x00000004L
     569             : #define SQL_TRANSACTION_REPEATABLE_READ         SQL_TXN_REPEATABLE_READ
     570             : #define SQL_TXN_SERIALIZABLE                0x00000008L
     571             : #define SQL_TRANSACTION_SERIALIZABLE            SQL_TXN_SERIALIZABLE
     572             : 
     573             : /* SQL_NULL_COLLATION values */
     574             : #define SQL_NC_HIGH                         0
     575             : #define SQL_NC_LOW                          1
     576             : 
     577           0 :     SQLRETURN  SQL_API SQLAllocConnect(SQLHENV EnvironmentHandle,
     578             :                                        SQLHDBC *ConnectionHandle);
     579             : 
     580           0 :     SQLRETURN  SQL_API SQLAllocEnv(SQLHENV *EnvironmentHandle);
     581             : 
     582             : #if (ODBCVER >= 0x0300)
     583           4 :     SQLRETURN  SQL_API SQLAllocHandle(SQLSMALLINT HandleType,
     584             :                                       SQLHANDLE InputHandle, SQLHANDLE *OutputHandle);
     585             : #endif
     586             : 
     587           2 :     SQLRETURN  SQL_API SQLAllocStmt(SQLHDBC ConnectionHandle,
     588             :                                     SQLHSTMT *StatementHandle);
     589             : 
     590          12 :     SQLRETURN  SQL_API SQLBindCol(SQLHSTMT StatementHandle,
     591             :                                   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
     592             :                                   SQLPOINTER TargetValue, SQLLEN BufferLength,
     593             :                                   SQLLEN *StrLen_or_Ind);
     594             : 
     595             : #if (ODBCVER >= 0x0300)
     596             :     SQLRETURN  SQL_API SQLBindParam(SQLHSTMT StatementHandle,
     597             :                                     SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
     598             :                                     SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
     599             :                                     SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
     600             :                                     SQLLEN *StrLen_or_Ind);
     601             : #endif
     602             : 
     603           0 :     SQLRETURN  SQL_API SQLCancel(SQLHSTMT StatementHandle);
     604             : 
     605             : #if (ODBCVER >= 0x0380)
     606             : SQLRETURN  SQL_API SQLCancelHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle);
     607             : #endif 
     608             : 
     609             : 
     610             : #if (ODBCVER >= 0x0300)
     611           2 :     SQLRETURN  SQL_API SQLCloseCursor(SQLHSTMT StatementHandle);
     612             : 
     613           0 :     SQLRETURN  SQL_API SQLColAttribute(SQLHSTMT StatementHandle,
     614             :                                         SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
     615             :                                         SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
     616             :                                         SQLSMALLINT *StringLength, SQLLEN *NumericAttribute );
     617             : 
     618             :                                                                                 /* spec says (SQLPOINTER) not (SQLEN*) - PAH */
     619             :                                                                                 /* Ms now say SQLLEN* 
     620             :                                            http://msdn.microsoft.com/library/en-us/odbc/htm/dasdkodbcoverview_64bit.asp - NG */
     621             :                                                                                 
     622             : #endif
     623             : 
     624             : 
     625           1 :     SQLRETURN  SQL_API SQLColumns(SQLHSTMT StatementHandle,
     626             :                                   SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
     627             :                                   SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
     628             :                                   SQLCHAR *TableName, SQLSMALLINT NameLength3,
     629             :                                   SQLCHAR *ColumnName, SQLSMALLINT NameLength4);
     630             : 
     631             : 
     632           2 :     SQLRETURN  SQL_API SQLConnect(SQLHDBC ConnectionHandle,
     633             :                                   SQLCHAR *ServerName, SQLSMALLINT NameLength1,
     634             :                                   SQLCHAR *UserName, SQLSMALLINT NameLength2,
     635             :                                   SQLCHAR *Authentication, SQLSMALLINT NameLength3);
     636             : 
     637             : #if (ODBCVER >= 0x0300)
     638           0 :     SQLRETURN  SQL_API SQLCopyDesc(SQLHDESC SourceDescHandle,
     639             :                                    SQLHDESC TargetDescHandle);
     640             : #endif
     641             : 
     642           0 :     SQLRETURN  SQL_API SQLDataSources(SQLHENV EnvironmentHandle,
     643             :                                       SQLUSMALLINT Direction, SQLCHAR *ServerName,
     644             :                                       SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
     645             :                                       SQLCHAR *Description, SQLSMALLINT BufferLength2,
     646             :                                       SQLSMALLINT *NameLength2);
     647             : 
     648           0 :     SQLRETURN  SQL_API SQLDescribeCol(SQLHSTMT StatementHandle,
     649             :                                       SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
     650             :                                       SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
     651             :                                       SQLSMALLINT *DataType, SQLULEN *ColumnSize,
     652             :                                       SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable);
     653             : 
     654           2 :     SQLRETURN  SQL_API SQLDisconnect(SQLHDBC ConnectionHandle);
     655             : 
     656             : #if (ODBCVER >= 0x0300)
     657           1 :     SQLRETURN  SQL_API SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle,
     658             :                                   SQLSMALLINT CompletionType);
     659             : #endif
     660             : 
     661           0 :     SQLRETURN  SQL_API SQLError(SQLHENV EnvironmentHandle,
     662             :                                 SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
     663             :                                 SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
     664             :                                 SQLCHAR *MessageText, SQLSMALLINT BufferLength,
     665             :                                 SQLSMALLINT *TextLength);
     666             : 
     667           2 :     SQLRETURN  SQL_API SQLExecDirect(SQLHSTMT StatementHandle,
     668             :                                      SQLCHAR *StatementText, SQLINTEGER TextLength);
     669             : 
     670        2002 :     SQLRETURN  SQL_API SQLExecute(SQLHSTMT StatementHandle);
     671             : 
     672        1006 :     SQLRETURN  SQL_API SQLFetch(SQLHSTMT StatementHandle);
     673             : 
     674             : #if (ODBCVER >= 0x0300)
     675        1001 :     SQLRETURN  SQL_API SQLFetchScroll(SQLHSTMT StatementHandle,
     676             :                                       SQLSMALLINT FetchOrientation, SQLLEN FetchOffset);
     677             : #endif
     678             : 
     679           0 :     SQLRETURN  SQL_API SQLFreeConnect(SQLHDBC ConnectionHandle);
     680             : 
     681           0 :     SQLRETURN  SQL_API SQLFreeEnv(SQLHENV EnvironmentHandle);
     682             : 
     683             : #if (ODBCVER >= 0x0300)
     684           6 :     SQLRETURN  SQL_API SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle);
     685             : #endif
     686             : 
     687           1 :     SQLRETURN  SQL_API SQLFreeStmt(SQLHSTMT StatementHandle,
     688             :                                    SQLUSMALLINT Option);
     689             : 
     690             : #if (ODBCVER >= 0x0300)
     691           0 :     SQLRETURN  SQL_API SQLGetConnectAttr(SQLHDBC ConnectionHandle,
     692             :                                          SQLINTEGER Attribute, SQLPOINTER Value,
     693             :                                          SQLINTEGER BufferLength, SQLINTEGER *StringLength);
     694             : #endif
     695             : 
     696           0 :     SQLRETURN  SQL_API SQLGetConnectOption(SQLHDBC ConnectionHandle,
     697             :                                            SQLUSMALLINT Option, SQLPOINTER Value);
     698             : 
     699           0 :     SQLRETURN  SQL_API SQLGetCursorName(SQLHSTMT StatementHandle,
     700             :                                         SQLCHAR *CursorName, SQLSMALLINT BufferLength,
     701             :                                         SQLSMALLINT *NameLength);
     702             : 
     703           0 :     SQLRETURN  SQL_API SQLGetData(SQLHSTMT StatementHandle,
     704             :                                   SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
     705             :                                   SQLPOINTER TargetValue, SQLLEN BufferLength,
     706             :                                   SQLLEN *StrLen_or_Ind);
     707             : 
     708             : #if (ODBCVER >= 0x0300)
     709           0 :     SQLRETURN   SQLGetDescField(SQLHDESC DescriptorHandle,
     710             :                                 SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
     711             :                                 SQLPOINTER Value, SQLINTEGER BufferLength,
     712             :                                 SQLINTEGER *StringLength);
     713             : 
     714           0 :     SQLRETURN  SQL_API SQLGetDescRec(SQLHDESC DescriptorHandle,
     715             :                                      SQLSMALLINT RecNumber, SQLCHAR *Name,
     716             :                                      SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
     717             :                                      SQLSMALLINT *Type, SQLSMALLINT *SubType,
     718             :                                      SQLLEN *Length, SQLSMALLINT *Precision,
     719             :                                      SQLSMALLINT *Scale, SQLSMALLINT *Nullable);
     720             : 
     721           0 :     SQLRETURN  SQL_API SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
     722             :                                        SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
     723             :                                        SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
     724             :                                        SQLSMALLINT *StringLength);
     725             : 
     726           0 :     SQLRETURN  SQL_API SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
     727             :                                      SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
     728             :                                      SQLINTEGER *NativeError, SQLCHAR *MessageText,
     729             :                                      SQLSMALLINT BufferLength, SQLSMALLINT *TextLength);
     730             : 
     731           2 :     SQLRETURN  SQL_API SQLGetEnvAttr(SQLHENV EnvironmentHandle,
     732             :                                      SQLINTEGER Attribute, SQLPOINTER Value,
     733             :                                      SQLINTEGER BufferLength, SQLINTEGER *StringLength);
     734             : #endif  /* ODBCVER >= 0x0300 */
     735             : 
     736           2 :     SQLRETURN  SQL_API SQLGetFunctions(SQLHDBC ConnectionHandle,
     737             :                                        SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported);
     738             : 
     739         160 :     SQLRETURN  SQL_API SQLGetInfo(SQLHDBC ConnectionHandle,
     740             :                                   SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
     741             :                                   SQLSMALLINT BufferLength, SQLSMALLINT *StringLength);
     742             : 
     743             : #if (ODBCVER >= 0x0300)
     744           8 :     SQLRETURN  SQL_API SQLGetStmtAttr(SQLHSTMT StatementHandle,
     745             :                                       SQLINTEGER Attribute, SQLPOINTER Value,
     746             :                                       SQLINTEGER BufferLength, SQLINTEGER *StringLength);
     747             : #endif  /* ODBCVER >= 0x0300 */
     748             : 
     749           0 :     SQLRETURN  SQL_API SQLGetStmtOption(SQLHSTMT StatementHandle,
     750             :                                         SQLUSMALLINT Option, SQLPOINTER Value);
     751             : 
     752           0 :     SQLRETURN  SQL_API SQLGetTypeInfo(SQLHSTMT StatementHandle,
     753             :                                       SQLSMALLINT DataType);
     754             : 
     755           0 :     SQLRETURN  SQL_API SQLNumResultCols(SQLHSTMT StatementHandle,
     756             :                                         SQLSMALLINT *ColumnCount);
     757             : 
     758           0 :     SQLRETURN  SQL_API SQLParamData(SQLHSTMT StatementHandle,
     759             :                                     SQLPOINTER *Value);
     760             : 
     761           3 :     SQLRETURN  SQL_API SQLPrepare(SQLHSTMT StatementHandle,
     762             :                                   SQLCHAR *StatementText, SQLINTEGER TextLength);
     763             : 
     764           0 :     SQLRETURN  SQL_API SQLPutData(SQLHSTMT StatementHandle,
     765             :                                   SQLPOINTER Data, SQLLEN StrLen_or_Ind);
     766             : 
     767           0 :     SQLRETURN  SQL_API SQLRowCount(SQLHSTMT StatementHandle,
     768             :                                    SQLLEN *RowCount);
     769             : 
     770             : #if (ODBCVER >= 0x0300)
     771           2 :     SQLRETURN  SQL_API SQLSetConnectAttr(SQLHDBC ConnectionHandle,
     772             :                                          SQLINTEGER Attribute, SQLPOINTER Value,
     773             :                                          SQLINTEGER StringLength);
     774             : #endif /* ODBCVER >= 0x0300 */
     775             : 
     776           0 :     SQLRETURN  SQL_API SQLSetConnectOption(SQLHDBC ConnectionHandle,
     777             :                                            SQLUSMALLINT Option, SQLULEN Value);
     778             : 
     779           0 :     SQLRETURN  SQL_API SQLSetCursorName(SQLHSTMT StatementHandle,
     780             :                                         SQLCHAR *CursorName, SQLSMALLINT NameLength);
     781             : 
     782             : #if (ODBCVER >= 0x0300)
     783           0 :     SQLRETURN  SQL_API SQLSetDescField(SQLHDESC DescriptorHandle,
     784             :                                        SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
     785             :                                        SQLPOINTER Value, SQLINTEGER BufferLength);
     786             : 
     787           0 :     SQLRETURN  SQL_API SQLSetDescRec(SQLHDESC DescriptorHandle,
     788             :                                      SQLSMALLINT RecNumber, SQLSMALLINT Type,
     789             :                                      SQLSMALLINT SubType, SQLLEN Length,
     790             :                                      SQLSMALLINT Precision, SQLSMALLINT Scale,
     791             :                                      SQLPOINTER Data, SQLLEN *StringLength,
     792             :                                      SQLLEN *Indicator);
     793             : 
     794           2 :     SQLRETURN  SQL_API SQLSetEnvAttr(SQLHENV EnvironmentHandle,
     795             :                                      SQLINTEGER Attribute, SQLPOINTER Value,
     796             :                                      SQLINTEGER StringLength);
     797             : #endif /* ODBCVER >= 0x0300 */
     798             : 
     799           0 :     SQLRETURN  SQL_API SQLSetParam(SQLHSTMT StatementHandle,
     800             :                                    SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
     801             :                                    SQLSMALLINT ParameterType, SQLULEN LengthPrecision,
     802             :                                    SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
     803             :                                    SQLLEN *StrLen_or_Ind);
     804             : 
     805             : #if (ODBCVER >= 0x0300)
     806           0 :     SQLRETURN  SQL_API SQLSetStmtAttr(SQLHSTMT StatementHandle,
     807             :                                       SQLINTEGER Attribute, SQLPOINTER Value,
     808             :                                       SQLINTEGER StringLength);
     809             : #endif
     810             : 
     811           0 :     SQLRETURN  SQL_API SQLSetStmtOption(SQLHSTMT StatementHandle,
     812             :                                         SQLUSMALLINT Option, SQLULEN Value);
     813             : 
     814           0 :     SQLRETURN  SQL_API SQLSpecialColumns(SQLHSTMT StatementHandle,
     815             :                                          SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
     816             :                                          SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
     817             :                                          SQLSMALLINT NameLength2, SQLCHAR *TableName,
     818             :                                          SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
     819             :                                          SQLUSMALLINT Nullable);
     820             : 
     821           0 :     SQLRETURN  SQL_API SQLStatistics(SQLHSTMT StatementHandle,
     822             :                                      SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
     823             :                                      SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
     824             :                                      SQLCHAR *TableName, SQLSMALLINT NameLength3,
     825             :                                      SQLUSMALLINT Unique, SQLUSMALLINT Reserved);
     826             : 
     827           0 :     SQLRETURN   SQL_API SQLTables(SQLHSTMT StatementHandle,
     828             :                                   SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
     829             :                                   SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
     830             :                                   SQLCHAR *TableName, SQLSMALLINT NameLength3,
     831             :                                   SQLCHAR *TableType, SQLSMALLINT NameLength4);
     832             : 
     833           0 :     SQLRETURN  SQL_API SQLTransact(SQLHENV EnvironmentHandle,
     834             :                                    SQLHDBC ConnectionHandle, SQLUSMALLINT CompletionType);
     835             : 
     836             : #ifdef __cplusplus
     837             : }
     838             : #endif
     839             : #endif  

Generated by: LCOV version 1.14