Annotation of embedaddon/php/ext/odbc/php_odbc_includes.h, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1997-2012 The PHP Group |
! 6: +----------------------------------------------------------------------+
! 7: | This source file is subject to version 3.01 of the PHP license, |
! 8: | that is bundled with this package in the file LICENSE, and is |
! 9: | available through the world-wide-web at the following url: |
! 10: | http://www.php.net/license/3_01.txt |
! 11: | If you did not receive a copy of the PHP license and are unable to |
! 12: | obtain it through the world-wide-web, please send a note to |
! 13: | license@php.net so we can mail you a copy immediately. |
! 14: +----------------------------------------------------------------------+
! 15: | Authors: Stig Sæther Bakken <ssb@php.net> |
! 16: | Andreas Karajannis <Andreas.Karajannis@gmd.de> |
! 17: | Kevin N. Shallow <kshallow@tampabay.rr.com> (Birdstep) |
! 18: +----------------------------------------------------------------------+
! 19: */
! 20:
! 21: /* $Id: php_odbc_includes.h 321634 2012-01-01 13:15:04Z felipe $ */
! 22:
! 23: #ifndef PHP_ODBC_INCLUDES_H
! 24: #define PHP_ODBC_INCLUDES_H
! 25:
! 26: #if HAVE_UODBC
! 27:
! 28: #define ODBCVER 0x0250
! 29: /*#ifndef MSVC5
! 30: #define FAR
! 31: #endif
! 32: */
! 33:
! 34: /* checking in the same order as in configure.in */
! 35:
! 36: #if defined(HAVE_SOLID) || defined(HAVE_SOLID_30) || defined(HAVE_SOLID_35) /* Solid Server */
! 37:
! 38: #define ODBC_TYPE "Solid"
! 39: #if defined(HAVE_SOLID)
! 40: # include <cli0core.h>
! 41: # include <cli0ext1.h>
! 42: # include <cli0env.h>
! 43: #elif defined(HAVE_SOLID_30)
! 44: # include <cli0cli.h>
! 45: # include <cli0defs.h>
! 46: # include <cli0env.h>
! 47: #elif defined(HAVE_SOLID_35)
! 48: # if !defined(PHP_WIN32)
! 49: # include <sqlunix.h>
! 50: # endif /* end: #if !defined(PHP_WIN32) */
! 51: # include <sqltypes.h>
! 52: # include <sqlucode.h>
! 53: # include <sqlext.h>
! 54: # include <sql.h>
! 55: #endif /* end: #if defined(HAVE_SOLID) */
! 56: #undef HAVE_SQL_EXTENDED_FETCH
! 57: PHP_FUNCTION(solid_fetch_prev);
! 58: #define SQLSMALLINT SWORD
! 59: #define SQLUSMALLINT UWORD
! 60: #ifndef SQL_SUCCEEDED
! 61: #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
! 62: #endif
! 63:
! 64: #elif defined(HAVE_EMPRESS) /* Empress */
! 65:
! 66: #define ODBC_TYPE "Empress"
! 67: #include <sql.h>
! 68: #include <sqlext.h>
! 69: #undef HAVE_SQL_EXTENDED_FETCH
! 70:
! 71: #elif defined(HAVE_ADABAS) /* Adabas D */
! 72:
! 73: #define ODBC_TYPE "Adabas D"
! 74: #include <WINDOWS.H>
! 75: #include <sql.h>
! 76: #include <sqlext.h>
! 77: #define HAVE_SQL_EXTENDED_FETCH 1
! 78: #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
! 79: #define SQLINTEGER ULONG
! 80: #define SQLUSMALLINT USHORT
! 81:
! 82: #elif defined(HAVE_SAPDB) /* SAP DB */
! 83:
! 84: #define ODBC_TYPE "SAP DB"
! 85: #include <WINDOWS.H>
! 86: #include <sql.h>
! 87: #include <sqlext.h>
! 88: #define HAVE_SQL_EXTENDED_FETCH 1
! 89: #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
! 90:
! 91: #elif defined(HAVE_IODBC) /* iODBC library */
! 92:
! 93: #ifdef CHAR
! 94: #undef CHAR
! 95: #endif
! 96:
! 97: #ifdef SQLCHAR
! 98: #undef SQLCHAR
! 99: #endif
! 100:
! 101: #define ODBC_TYPE "iODBC"
! 102: #include <sql.h>
! 103: #include <sqlext.h>
! 104: #include <iodbcext.h>
! 105: #define HAVE_SQL_EXTENDED_FETCH 1
! 106:
! 107: #elif defined(HAVE_UNIXODBC) /* unixODBC library */
! 108:
! 109: #ifdef CHAR
! 110: #undef CHAR
! 111: #endif
! 112:
! 113: #ifdef SQLCHAR
! 114: #undef SQLCHAR
! 115: #endif
! 116:
! 117: #define ODBC_TYPE "unixODBC"
! 118: #include <sql.h>
! 119: #include <sqlext.h>
! 120: #define HAVE_SQL_EXTENDED_FETCH 1
! 121:
! 122: #elif defined(HAVE_ESOOB) /* Easysoft ODBC-ODBC Bridge library */
! 123:
! 124: #define ODBC_TYPE "ESOOB"
! 125: #include <sql.h>
! 126: #include <sqlext.h>
! 127: #define HAVE_SQL_EXTENDED_FETCH 1
! 128:
! 129: #elif defined(HAVE_ODBC_ROUTER) /* ODBCRouter.com */
! 130:
! 131: #ifdef CHAR
! 132: #undef CHAR
! 133: #endif
! 134:
! 135: #ifdef SQLCHAR
! 136: #undef SQLCHAR
! 137: #endif
! 138:
! 139: #define ODBC_TYPE "ODBCRouter"
! 140: #include <odbcsdk.h>
! 141: #undef HAVE_SQL_EXTENDED_FETCH
! 142:
! 143: #elif defined(HAVE_OPENLINK) /* OpenLink ODBC drivers */
! 144:
! 145: #define ODBC_TYPE "Openlink"
! 146: #include <iodbc.h>
! 147: #include <isql.h>
! 148: #include <isqlext.h>
! 149: #include <udbcext.h>
! 150: #define HAVE_SQL_EXTENDED_FETCH 1
! 151: #ifndef SQLSMALLINT
! 152: #define SQLSMALLINT SWORD
! 153: #endif
! 154: #ifndef SQLUSMALLINT
! 155: #define SQLUSMALLINT UWORD
! 156: #endif
! 157:
! 158: #elif defined(HAVE_BIRDSTEP) /* Raima Birdstep */
! 159:
! 160: #define ODBC_TYPE "Birdstep"
! 161: #define UNIX
! 162: /*
! 163: * Extended Fetch in the Birdstep ODBC API is incapable of returning long varchar (memo) fields.
! 164: * So the following line has been commented-out to accomadate. - KNS
! 165: *
! 166: * #define HAVE_SQL_EXTENDED_FETCH 1
! 167: */
! 168: #include <sql.h>
! 169: #include <sqlext.h>
! 170: #define SQLINTEGER SDWORD
! 171: #define SQLSMALLINT SWORD
! 172: #define SQLUSMALLINT UWORD
! 173:
! 174:
! 175: #elif defined(HAVE_DBMAKER) /* DBMaker */
! 176:
! 177: #define ODBC_TYPE "DBMaker"
! 178: #undef ODBCVER
! 179: #define ODBCVER 0x0300
! 180: #define HAVE_SQL_EXTENDED_FETCH 1
! 181: #include <odbc.h>
! 182:
! 183:
! 184: #elif defined(HAVE_CODBC) /* Custom ODBC */
! 185:
! 186: #define ODBC_TYPE "Custom ODBC"
! 187: #define HAVE_SQL_EXTENDED_FETCH 1
! 188: #include <odbc.h>
! 189:
! 190: #elif defined(HAVE_IBMDB2) /* DB2 CLI */
! 191:
! 192: #define ODBC_TYPE "IBM DB2 CLI"
! 193: #define HAVE_SQL_EXTENDED_FETCH 1
! 194: #include <sqlcli1.h>
! 195: #ifdef DB268K
! 196: /* Need to include ASLM for 68K applications */
! 197: #include <LibraryManager.h>
! 198: #endif
! 199:
! 200: #else /* MS ODBC */
! 201:
! 202: #define HAVE_SQL_EXTENDED_FETCH 1
! 203: #include <WINDOWS.H>
! 204: #include <sql.h>
! 205: #include <sqlext.h>
! 206: #endif
! 207:
! 208:
! 209: /* Common defines */
! 210:
! 211: #if defined( HAVE_IBMDB2 ) || defined( HAVE_UNIXODBC ) || defined (HAVE_IODBC)
! 212: #define ODBC_SQL_ENV_T SQLHANDLE
! 213: #define ODBC_SQL_CONN_T SQLHANDLE
! 214: #define ODBC_SQL_STMT_T SQLHANDLE
! 215: #elif defined( HAVE_SOLID_35 ) || defined( HAVE_SAPDB ) || defined ( HAVE_EMPRESS )
! 216: #define ODBC_SQL_ENV_T SQLHENV
! 217: #define ODBC_SQL_CONN_T SQLHDBC
! 218: #define ODBC_SQL_STMT_T SQLHSTMT
! 219: #else
! 220: #define ODBC_SQL_ENV_T HENV
! 221: #define ODBC_SQL_CONN_T HDBC
! 222: #define ODBC_SQL_STMT_T HSTMT
! 223: #endif
! 224:
! 225: typedef struct odbc_connection {
! 226: ODBC_SQL_ENV_T henv;
! 227: ODBC_SQL_CONN_T hdbc;
! 228: char laststate[6];
! 229: char lasterrormsg[SQL_MAX_MESSAGE_LENGTH];
! 230: int id;
! 231: int persistent;
! 232: } odbc_connection;
! 233:
! 234: typedef struct odbc_result_value {
! 235: char name[32];
! 236: char *value;
! 237: SQLLEN vallen;
! 238: SQLLEN coltype;
! 239: } odbc_result_value;
! 240:
! 241: typedef struct odbc_result {
! 242: ODBC_SQL_STMT_T stmt;
! 243: odbc_result_value *values;
! 244: SQLSMALLINT numcols;
! 245: SQLSMALLINT numparams;
! 246: # if HAVE_SQL_EXTENDED_FETCH
! 247: int fetch_abs;
! 248: # endif
! 249: long longreadlen;
! 250: int binmode;
! 251: int fetched;
! 252: odbc_connection *conn_ptr;
! 253: } odbc_result;
! 254:
! 255: ZEND_BEGIN_MODULE_GLOBALS(odbc)
! 256: char *defDB;
! 257: char *defUser;
! 258: char *defPW;
! 259: long allow_persistent;
! 260: long check_persistent;
! 261: long max_persistent;
! 262: long max_links;
! 263: long num_persistent;
! 264: long num_links;
! 265: int defConn;
! 266: long defaultlrl;
! 267: long defaultbinmode;
! 268: long default_cursortype;
! 269: char laststate[6];
! 270: char lasterrormsg[SQL_MAX_MESSAGE_LENGTH];
! 271: HashTable *resource_list;
! 272: HashTable *resource_plist;
! 273: ZEND_END_MODULE_GLOBALS(odbc)
! 274:
! 275: int odbc_add_result(HashTable *list, odbc_result *result);
! 276: odbc_result *odbc_get_result(HashTable *list, int count);
! 277: void odbc_del_result(HashTable *list, int count);
! 278: int odbc_add_conn(HashTable *list, HDBC conn);
! 279: odbc_connection *odbc_get_conn(HashTable *list, int count);
! 280: void odbc_del_conn(HashTable *list, int ind);
! 281: int odbc_bindcols(odbc_result *result TSRMLS_DC);
! 282:
! 283: #define ODBC_SQL_ERROR_PARAMS odbc_connection *conn_resource, ODBC_SQL_STMT_T stmt, char *func
! 284:
! 285: void odbc_sql_error(ODBC_SQL_ERROR_PARAMS);
! 286:
! 287: #define IS_SQL_LONG(x) (x == SQL_LONGVARBINARY || x == SQL_LONGVARCHAR)
! 288: #define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || x == SQL_LONGVARBINARY)
! 289:
! 290: #ifdef ZTS
! 291: # define ODBCG(v) TSRMG(odbc_globals_id, zend_odbc_globals *, v)
! 292: #else
! 293: # define ODBCG(v) (odbc_globals.v)
! 294: extern ZEND_API zend_odbc_globals odbc_globals;
! 295: #endif
! 296:
! 297: #endif /* HAVE_UODBC */
! 298: #endif /* PHP_ODBC_INCLUDES_H */
! 299:
! 300: /*
! 301: * Local variables:
! 302: * tab-width: 4
! 303: * c-basic-offset: 4
! 304: * End:
! 305: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>