Annotation of embedaddon/php/ext/odbc/php_odbc_includes.h, revision 1.1.1.4
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
1.1.1.4 ! misho 5: | Copyright (c) 1997-2014 The PHP Group |
1.1 misho 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:
1.1.1.2 misho 21: /* $Id$ */
1.1 misho 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.
1.1.1.3 misho 164: * So the following line has been commented-out to accommodate. - KNS
1.1 misho 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 {
1.1.1.4 ! misho 235: char name[256];
1.1 misho 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>