summaryrefslogtreecommitdiffstats
path: root/storage/connect/plgodbc.h
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/plgodbc.h')
-rw-r--r--storage/connect/plgodbc.h230
1 files changed, 230 insertions, 0 deletions
diff --git a/storage/connect/plgodbc.h b/storage/connect/plgodbc.h
new file mode 100644
index 00000000..46bc41ad
--- /dev/null
+++ b/storage/connect/plgodbc.h
@@ -0,0 +1,230 @@
+/***********************************************************************/
+/* PLGODBC.H - This is the ODBC PlugDB driver include file. */
+/***********************************************************************/
+//efine WINVER 0x0300 // prevent Windows 3.1 feature usage
+#include <windows.h> /* Windows include file */
+#include <windowsx.h> /* Message crackers */
+#include <commctrl.h>
+
+/***********************************************************************/
+/* Included C-definition files required by the interface. */
+/***********************************************************************/
+#include <string.h> /* String manipulation declares */
+#include <stdlib.h> /* C standard library */
+#include <ctype.h> /* C language specific types */
+#include <stdio.h> /* FOPEN_MAX declaration */
+#include <time.h> /* time_t type declaration */
+
+/***********************************************************************/
+/* ODBC interface of PlugDB driver declares. */
+/***********************************************************************/
+#include "podbcerr.h" /* Resource ID for PlugDB Driver */
+#if !defined(WIN32)
+#include "w16macro.h"
+#endif
+
+#define ODBCVER 0x0300
+
+#include "sqltypes.h"
+#include "sql.h"
+#include "sqlext.h"
+
+/***********************************************************************/
+/* Definitions to be used in function prototypes. */
+/* The SQL_API is to be used only for those functions exported for */
+/* driver manager use. */
+/* The EXPFUNC is to be used only for those functions exported but */
+/* used internally, ie, dialog procs. */
+/* The INTFUNC is to be used for all other functions. */
+/***********************************************************************/
+#if defined(WIN32)
+#define INTFUNC __stdcall
+#define EXPFUNC __stdcall
+#else
+#define INTFUNC FAR PASCAL
+#define EXPFUNC __export CALLBACK
+#endif
+
+/***********************************************************************/
+/* External variables. */
+/***********************************************************************/
+extern HINSTANCE NEAR s_hModule; // DLL handle.
+#ifdef DEBTRACE
+extern FILE *debug;
+#endif
+extern bool clearerror;
+
+/***********************************************************************/
+/* Additional values used by PlugDB for ODBC. */
+/***********************************************************************/
+#define RES_TYPE_PREPARE 1 /* Result from SQLPrepare */
+#define RES_TYPE_CATALOG 2 /* Result from catalog funcs */
+#define MAXPATHLEN _MAX_PATH /* Max path length */
+#define MAXKEYLEN 16 /* Max keyword length */
+#define MAXDESC 256 /* Max description length */
+#define MAXDSNAME 33 /* Max data source name length */
+#define MAXCRNAME 18 /* Max stmt cursor name length */
+#define DEFMAXRES 6300 /* Default MaxRes value */
+#define NAM_LEN 128 /* Length of col and tab names */
+
+#define MAXRESULT 1000 /* ? */
+#define MAXCOMMAND 200 /* ? */
+#define RC_ERROR RC_LAST-1
+#define RC_FREE 3
+
+#if !defined(NOLIB)
+#define CNXKEY uint /* C Key returned by Conn DLL */
+#else
+typedef struct _conninfo *PCONN;
+#endif /* !NOLIB */
+
+#if defined(DEBTRACE)
+#define TRACE0(X) fprintf(debug,X);
+#define TRACE1(X,A) fprintf(debug,X,A);
+#define TRACE2(X,A,B) fprintf(debug,X,A,B);
+#define TRACE3(X,A,B,C) fprintf(debug,X,A,B,C);
+#define TRACE4(X,A,B,C,D) fprintf(debug,X,A,B,C,D);
+#define TRACE5(X,A,B,C,D,E) fprintf(debug,X,A,B,C,D,E);
+#define TRACE6(X,A,B,C,D,E,F) fprintf(debug,X,A,B,C,D,E,F);
+#else /* !DEBTRACE*/
+#define TRACE0(X)
+#define TRACE1(X,A)
+#define TRACE2(X,A,B)
+#define TRACE3(X,A,B,C)
+#define TRACE4(X,A,B,C,D)
+#define TRACE5(X,A,B,C,D,E)
+#define TRACE6(X,A,B,C,D,E,F)
+#endif /* !DEBTRACE*/
+
+// This definition MUST be identical to the value in plgdbsem.h
+#define XMOD_PREPARE 1
+
+/***********************************************************************/
+/* ODBC.INI keywords (use extern definition in SETUP.C) */
+/***********************************************************************/
+extern char const *EMPTYSTR; /* Empty String */
+extern char const *OPTIONON;
+extern char const *OPTIONOFF;
+extern char const *INI_SDEFAULT; /* Default data source name */
+extern char const *ODBC_INI; /* ODBC initialization file */
+extern char const *INI_KDEFL; /* Is SQL to use by default? */
+extern char const *INI_KLANG; /* Application language */
+extern char const *INI_KDATA; /* Data description file */
+extern char const *INI_KSVR; /* PLG Server */
+
+/************************************************************************/
+/* Attribute key indexes (into an array of Attr structs, see below) */
+/************************************************************************/
+#define KEY_DSN 0
+#define KEY_DEFL 1
+#define KEY_LANG 2
+#define KEY_DATA 3
+#define KEY_SERVER 4
+#define LAST_KEY 5 /* Number of keys in TAG's */
+#define KEY_DESC 5
+#define KEY_TRANSNAME 6
+#define KEY_TRANSOPTION 7
+#define KEY_TRANSDLL 8
+#define NUMOFKEYS 9 /* Number of keys supported */
+
+#define FOURYEARS 126230400 // Four years in seconds (1 leap)
+
+/***********************************************************************/
+/* This is used when an "out of memory" error happens, because this */
+/* error recording system allocates memory when it logs an error, */
+/* and it would be bad if it tried to allocate memory when it got an */
+/* out of memory error. */
+/***********************************************************************/
+typedef enum _ERRSTAT {
+ errstatOK,
+ errstatNO_MEMORY,
+ } ERRSTAT;
+
+/***********************************************************************/
+/* Types */
+/***********************************************************************/
+typedef struct TagAttr {
+ bool fSupplied;
+ char Attr[MAXPATHLEN];
+ } TAG, *PTAG;
+
+typedef struct _parscons { /* Parse constants */
+ int Slen; /* String length */
+ int Ntag; /* Number of entries in tags */
+ int Nlook; /* Number of entries in lookup */
+ char Sep; /* Separator */
+ } PARC, *PPARC;
+
+/***********************************************************************/
+/* Attribute string look-up table (maps keys to associated indexes) */
+/***********************************************************************/
+typedef struct _Look {
+ const char *szKey;
+ int iKey;
+ } LOOK, *PLOOK;
+
+/***********************************************************************/
+/* This is info about a single error. */
+/***********************************************************************/
+typedef struct _ERRBLK *PERRBLK;
+
+typedef struct _ERRBLK {
+ PERRBLK Next; /* Next block in linked list of error blocks */
+ DWORD Native_Error; /* Native error */
+ DWORD Stderr; /* SQLC error code */
+ PSZ Message; /* Points to text of message */
+ } ERRBLK;
+
+/***********************************************************************/
+/* This is a header block, it records information about a list of */
+/* errors (ERRBLOCK's). */
+/***********************************************************************/
+typedef struct _ERRINFO {
+ PERRBLK First; /* First block in linked list of error blocks. */
+ PERRBLK Last; /* Last block in above list. */
+ ERRSTAT Errstat; /* Status for special condition out of memory */
+ } ERRINFO, *PERRINFO;
+
+/***********************************************************************/
+/* Environment information. */
+/***********************************************************************/
+typedef struct _env {
+ ERRINFO Errinfo; /* Error list */
+ UDWORD ODBCver;
+ UDWORD ODBCdateformat;
+ } ENV, *PENV;
+
+/***********************************************************************/
+/* Classes used in the PlugDB ODBC Driver. */
+/***********************************************************************/
+typedef class DBC *PDBC;
+typedef class STMT *PSTMT;
+typedef class CURSOR *PCURSOR;
+typedef class RESULT *PRESULT;
+typedef class BINDDATA *PBIND;
+typedef class BINDPARM *PBDPARM;
+typedef class CPLGdrv *PSCDRV;
+typedef class DESCRIPTOR *PDSC;
+
+/***********************************************************************/
+/* ODBC Prototypes. */
+/***********************************************************************/
+void PostSQLError(HENV, HDBC, HSTMT, DWORD, DWORD, PSZ);
+void ClearSQLError(HENV, HDBC, HSTMT);
+short LoadRcString(UWORD, LPSTR, short);
+RETCODE RetcodeCopyBytes(HDBC, HSTMT, UCHAR FAR *, SWORD,
+ SWORD FAR *, UCHAR FAR *, SWORD, bool);
+
+/***********************************************************************/
+/* Private functions used by the driver. */
+/***********************************************************************/
+bool EXPFUNC FDriverConnectProc(HWND, WORD, WPARAM, LPARAM);
+extern void ParseAttrString(PLOOK, PTAG, UCHAR FAR *, PPARC);
+RETCODE PASCAL StringCopy(HDBC, HSTMT, PTR, SWORD, SWORD FAR *,
+ char FAR *);
+RETCODE PASCAL ShortCopy(HDBC, HSTMT, PTR, SWORD, SWORD FAR *, short);
+RETCODE PASCAL LongCopy(HDBC, HSTMT, PTR, SWORD, SWORD FAR *, int);
+RETCODE PASCAL GeneralCopy(HDBC, HSTMT, PTR, SWORD,
+ SWORD FAR *, PTR, SWORD);
+
+/* --------------------- End of PLGODBC.H ---------------------------- */