#if HAVE_OCI8
# ifndef PHP_OCI8_H
# define PHP_OCI8_H
# endif
# if (defined(__osf__) && defined(__alpha))
# ifndef A_OSF
# define A_OSF
# endif
# ifndef OSF1
# define OSF1
# endif
# ifndef _INTRINSICS
# define _INTRINSICS
# endif
# endif
#ifdef PHP_WIN32
#define PHP_OCI_API __declspec(dllexport)
#else
#define PHP_OCI_API
#endif
#if defined(min)
#undef min
#endif
#if defined(max)
#undef max
#endif
#include <oci.h>
typedef struct {
int num;
int persistent;
int is_open;
char *dbname;
OCIServer *pServer;
#if 0
OCIFocbkStruct failover;
#endif
} oci_server;
typedef struct {
int num;
int persistent;
int is_open;
int exclusive;
char *hashed_details;
oci_server *server;
OCISession *pSession;
OCIEnv *pEnv;
ub2 charsetId;
} oci_session;
typedef struct {
int id;
int is_open;
oci_session *session;
OCISvcCtx *pServiceContext;
sword error;
OCIError *pError;
int needs_commit;
} oci_connection;
typedef struct {
int id;
oci_connection *conn;
dvoid *ocidescr;
ub4 type;
} oci_descriptor;
typedef struct {
int id;
oci_connection *conn;
OCIType *tdo;
OCITypeCode coll_typecode;
OCIRef *elem_ref;
OCIType *element_type;
OCITypeCode element_typecode;
OCIColl *coll;
} oci_collection;
typedef struct {
zval *zval;
text *name;
ub4 name_len;
ub4 type;
} oci_define;
typedef struct {
int id;
oci_connection *conn;
sword error;
OCIError *pError;
OCIStmt *pStmt;
char *last_query;
HashTable *columns;
HashTable *binds;
HashTable *defines;
int ncolumns;
int executed;
int has_data;
ub2 stmttype;
} oci_statement;
typedef struct {
OCIBind *pBind;
zval *zval;
dvoid *descr;
OCIStmt *pStmt;
sb2 indicator;
ub2 retcode;
} oci_bind;
typedef struct {
oci_statement *statement;
OCIDefine *pDefine;
char *name;
ub4 name_len;
ub2 data_type;
ub2 data_size;
ub4 storage_size4;
sb2 indicator;
ub2 retcode;
ub2 retlen;
ub4 retlen4;
ub2 is_descr;
ub2 is_cursor;
int descr;
oci_statement *pstmt;
int stmtid;
int descid;
void *data;
oci_define *define;
int piecewise;
ub4 cb_retlen;
ub2 scale;
ub2 precision;
} oci_out_column;
typedef struct {
sword error;
OCIError *pError;
long debug_mode;
int shutdown;
HashTable *server;
HashTable *user;
OCIEnv *pEnv;
int in_call;
} php_oci_globals;
extern zend_module_entry oci8_module_entry;
#define phpext_oci8_ptr &oci8_module_entry
#define OCI_MAX_NAME_LEN 64
#define OCI_MAX_DATA_SIZE INT_MAX
#define OCI_PIECE_SIZE (64*1024)-1
#ifdef ZTS
#define OCI(v) TSRMG(oci_globals_id, php_oci_globals *, v)
#else
#define OCI(v) (oci_globals.v)
#endif
#else
# define oci8_module_ptr NULL
#endif