#ifndef _PROXYMANAGER_H
#define _PROXYMANAGER_H

#define NUM_SQLFUNC 78
#define ERROR_FREE 0
#define ERROR_SQLERROR  1
#define ERROR_LIBRARY_NOT_FOUND 2
#define ERROR_FUNCTIONS_NOT_LOADED  3

#define ODBCVER 0x0351

typedef struct dm_func                          /* driver manager functions */
{
    int            ordinal;
    char           *name;
    void           *d_func;
    SQLRETURN      (*func)();
} DM_FUNC;

typedef struct proxyhandle
{
	void *dmHandle;				/* driver manager handle */
	BOOL isWindowsDriver;       /* is driver a Windows version*/
	BOOL bCallbackReady;        /* procs taken from Windows driver placed in driver manager as callbacks */
	BOOL bFunctionReady;
	int  nErrorType;
	DM_FUNC functions[NUM_SQLFUNC];			/* entry point for driver manager functions */
	char driverLibName[200];	/* ODBC driver SO name */
	char dmLibName[200];		/* driver manager library name */
	char ServerName[200];       /* keep server name */
	char UserName[50];          /* keep username */	
} PROXYHANDLE;

BOOL ODBC_LoadDriverManager();
BOOL ODBC_LoadDMFunctions();

#define    /* 00 */ SQLAPI_INDEX_SQLALLOCCONNECT       0
#define    /* 01 */ SQLAPI_INDEX_SQLALLOCENV           1
#define    /* 02 */ SQLAPI_INDEX_SQLALLOCHANDLE        2
#define    /* 03 */ SQLAPI_INDEX_SQLALLOCSTMT          3
#define    /* 04 */ SQLAPI_INDEX_SQLALLOCHANDLESTD     4
#define    /* 05 */ SQLAPI_INDEX_SQLBINDCOL            5
#define    /* 06 */ SQLAPI_INDEX_SQLBINDPARAM          6
#define    /* 07 */ SQLAPI_INDEX_SQLBINDPARAMETER      7
#define    /* 08 */ SQLAPI_INDEX_SQLBROWSECONNECT      8
#define    /* 09 */ SQLAPI_INDEX_SQLBULKOPERATIONS     9
#define    /* 10 */ SQLAPI_INDEX_SQLCANCEL            10
#define    /* 11 */ SQLAPI_INDEX_SQLCLOSECURSOR       11
#define    /* 12 */ SQLAPI_INDEX_SQLCOLATTRIBUTE      12
#define    /* 13 */ SQLAPI_INDEX_SQLCOLATTRIBUTES     13
#define    /* 14 */ SQLAPI_INDEX_SQLCOLUMNPRIVILEGES  14
#define    /* 15 */ SQLAPI_INDEX_SQLCOLUMNS           15
#define    /* 16 */ SQLAPI_INDEX_SQLCONNECT           16
#define    /* 17 */ SQLAPI_INDEX_SQLCOPYDESC          17
#define    /* 18 */ SQLAPI_INDEX_SQLDATASOURCES       18
#define    /* 19 */ SQLAPI_INDEX_SQLDESCRIBECOL       19
#define    /* 20 */ SQLAPI_INDEX_SQLDESCRIBEPARAM     20
#define    /* 21 */ SQLAPI_INDEX_SQLDISCONNECT        21
#define    /* 22 */ SQLAPI_INDEX_SQLDRIVERCONNECT     22
#define    /* 23 */ SQLAPI_INDEX_SQLDRIVERS           23
#define    /* 24 */ SQLAPI_INDEX_SQLENDTRAN           24
#define    /* 25 */ SQLAPI_INDEX_SQLERROR             25
#define    /* 26 */ SQLAPI_INDEX_SQLEXECDIRECT        26
#define    /* 27 */ SQLAPI_INDEX_SQLEXECUTE           27
#define    /* 28 */ SQLAPI_INDEX_SQLEXTENDEDFETCH     28
#define    /* 29 */ SQLAPI_INDEX_SQLFETCH             29
#define    /* 30 */ SQLAPI_INDEX_SQLFETCHSCROLL       30
#define    /* 31 */ SQLAPI_INDEX_SQLFOREIGNKEYS       31
#define    /* 32 */ SQLAPI_INDEX_SQLFREEENV           32
#define    /* 33 */ SQLAPI_INDEX_SQLFREEHANDLE        33
#define    /* 34 */ SQLAPI_INDEX_SQLFREESTMT          34
#define    /* 35 */ SQLAPI_INDEX_SQLFREECONNECT       35
#define    /* 36 */ SQLAPI_INDEX_SQLGETCONNECTATTR    36
#define    /* 37 */ SQLAPI_INDEX_SQLGETCONNECTOPTION  37
#define    /* 38 */ SQLAPI_INDEX_SQLGETCURSORNAME     38
#define    /* 39 */ SQLAPI_INDEX_SQLGETDATA           39
#define    /* 40 */ SQLAPI_INDEX_SQLGETDESCFIELD      40
#define    /* 41 */ SQLAPI_INDEX_SQLGETDESCREC        41
#define    /* 42 */ SQLAPI_INDEX_SQLGETDIAGFIELD      42
#define    /* 43 */ SQLAPI_INDEX_SQLGETENVATTR        43
#define    /* 44 */ SQLAPI_INDEX_SQLGETFUNCTIONS      44
#define    /* 45 */ SQLAPI_INDEX_SQLGETINFO           45
#define    /* 46 */ SQLAPI_INDEX_SQLGETSTMTATTR       46
#define    /* 47 */ SQLAPI_INDEX_SQLGETSTMTOPTION     47
#define    /* 48 */ SQLAPI_INDEX_SQLGETTYPEINFO       48
#define    /* 49 */ SQLAPI_INDEX_SQLMORERESULTS       49
#define    /* 50 */ SQLAPI_INDEX_SQLNATIVESQL         50
#define    /* 51 */ SQLAPI_INDEX_SQLNUMPARAMS         51
#define    /* 52 */ SQLAPI_INDEX_SQLNUMRESULTCOLS     52
#define    /* 53 */ SQLAPI_INDEX_SQLPARAMDATA         53
#define    /* 54 */ SQLAPI_INDEX_SQLPARAMOPTIONS      54
#define    /* 55 */ SQLAPI_INDEX_SQLPREPARE           55
#define    /* 56 */ SQLAPI_INDEX_SQLPRIMARYKEYS       56
#define    /* 57 */ SQLAPI_INDEX_SQLPROCEDURECOLUMNS  57
#define    /* 58 */ SQLAPI_INDEX_SQLPROCEDURES        58
#define    /* 59 */ SQLAPI_INDEX_SQLPUTDATA           59
#define    /* 60 */ SQLAPI_INDEX_SQLROWCOUNT          60
#define    /* 61 */ SQLAPI_INDEX_SQLSETCONNECTATTR    61
#define    /* 62 */ SQLAPI_INDEX_SQLSETCONNECTOPTION  62
#define    /* 63 */ SQLAPI_INDEX_SQLSETCURSORNAME     63
#define    /* 64 */ SQLAPI_INDEX_SQLSETDESCFIELD      64
#define    /* 65 */ SQLAPI_INDEX_SQLSETDESCREC        65
#define    /* 66 */ SQLAPI_INDEX_SQLSETENVATTR        66
#define    /* 67 */ SQLAPI_INDEX_SQLSETPARAM          67
#define    /* 68 */ SQLAPI_INDEX_SQLSETPOS            68
#define    /* 69 */ SQLAPI_INDEX_SQLSETSCROLLOPTIONS  69
#define    /* 70 */ SQLAPI_INDEX_SQLSETSTMTATTR       70
#define    /* 71 */ SQLAPI_INDEX_SQLSETSTMTOPTION     71
#define    /* 72 */ SQLAPI_INDEX_SQLSPECIALCOLUMNS    72
#define    /* 73 */ SQLAPI_INDEX_SQLSTATISTICS        73
#define    /* 74 */ SQLAPI_INDEX_SQLTABLEPRIVILEGES   74
#define    /* 75 */ SQLAPI_INDEX_SQLTABLES            75
#define    /* 76 */ SQLAPI_INDEX_SQLTRANSACT          76
#define    /* 77 */ SQLAPI_INDEX_SQLGETDIAGREC        77

#endif