/***************************************************************************/ /* DBASE.H */ /* Copyright 1993-96 SYWARE, Inc. All rights reserved. */ /***************************************************************************/ #ifdef _UNIX_ #include "unixdefs.h" #include "sqltype.h" #else #include "windows.h" #include "windowsx.h" typedef unsigned char FAR* LPUSTR; //#define ODBCVER 0x0210 #include #include #ifndef RC_INVOKED #ifndef WIN32 #include #endif #endif #endif #ifdef _UNIX_ #define PATH_SEPARATOR_CHAR '/' #define PATH_SEPARATOR_STR "/" #else #define PATH_SEPARATOR_CHAR '\\' #define PATH_SEPARATOR_STR "\\" #endif #define DBASE_ERR_SUCCESS 0 #define DBASE_ERR_MEMALLOCFAIL 1 #define DBASE_ERR_NODATAFOUND 2 #define DBASE_ERR_WRITEERROR 3 #define DBASE_ERR_TABLEACCESSERROR 4 #define DBASE_ERR_CONVERSIONERROR 5 #define DBASE_ERR_CORRUPTFILE 6 #define DBASE_ERR_CREATEERROR 7 #define DBASE_ERR_CLOSEERROR 8 #define DBASE_ERR_NOTSUPPORTED 9 #define DBASE_ERR_NOSUCHCOLUMN 10 #define DBASE_ERR_TRUNCATION 11 #define DBASE_ERR_NOTNULL 12 #define DBASE_ERR_NULL 13 #define DBASE_MAX_PATHNAME_SIZE 127 #define DBASE_COLUMN_NAME_SIZE 11 typedef struct tagDBASECOL { /* The following fields are in the disk file */ UCHAR name[DBASE_COLUMN_NAME_SIZE]; UCHAR type; UCHAR reserved1[4]; UCHAR length; UCHAR scale; UCHAR reserved2[2]; UCHAR workarea; UCHAR reserved3[10]; UCHAR mdx; /* The following fields are not in the disk file */ UCHAR FAR * value; } DBASECOL, FAR *LPDBASECOL; //forward declaration class CSafeIEnumWbemClassObject; #define IMPLTMT_PASSTHROUGH 1 #define BATCH_NUM_OF_INSTANCES 10 typedef struct tagDBASEFILE { UWORD columnCount; UDWORD FAR* sortArray; UDWORD currentRecord; CSafeIEnumWbemClassObject* tempEnum; CMapWordToPtr* pAllRecords; //only next 10 for passthrough SQL IWbemClassObject* record; //Passthrough SQL specific BOOL fMoreToCome; //flag to indicate if there are more instances to fetch } DBASEFILE, FAR * LPDBASEFILE; #define DBASE_HEADER_LENGTH 32 #define DBASE_COLUMN_DESCR_LENGTH 32 #define DBASE_RECORD_LENGTH_OFFSET 10 #define DBASE_HEADER_SIZE_OFFSET 8 #define DBASE_NOT_ENCRYPTED 0x00 #define DBASE_MDX_FLAG_OFF 0x00 #define DBASE_END_OF_COLUMNS 0x0D #define DBASE_RECORD_DELETED 0x2A #define DBASE_RECORD_NOT_DELETED 0x20 #define DBASE_FILE_END 0x1A #define DBASE_3_FILE 0x03 #define DBASE_4_FILE 0x03 #define DBASE_CHAR 'C' #define DBASE_NUMERIC 'N' #define DBASE_FLOAT 'F' #define DBASE_LOGICAL 'L' #define DBASE_DATE 'D' #define DBASE_MEMO 'M' /***************************************************************************/ SWORD FAR PASCAL dBaseCreate(LPUSTR); SWORD FAR PASCAL dBaseAddColumn(LPUSTR, LPUSTR, UCHAR, UCHAR, UCHAR); SWORD FAR PASCAL dBaseOpen(LPUSTR, BOOL, LPDBASEFILE FAR *); SWORD FAR PASCAL dBaseColumnCount(LPDBASEFILE, UWORD FAR *); SWORD FAR PASCAL dBaseColumnName(LPDBASEFILE, UWORD, LPUSTR); SWORD FAR PASCAL dBaseColumnType(LPDBASEFILE, UWORD, UCHAR FAR *); SWORD FAR PASCAL dBaseColumnLength(LPDBASEFILE, UWORD, UCHAR FAR *); SWORD FAR PASCAL dBaseColumnScale(LPDBASEFILE, UWORD, UCHAR FAR *); SWORD FAR PASCAL dBaseSort(LPDBASEFILE, UWORD, BOOL); SWORD FAR PASCAL dBaseReadFirst(LPDBASEFILE); SWORD FAR PASCAL dBaseReadNext(LPDBASEFILE); SWORD FAR PASCAL dBaseColumnCharVal(LPDBASEFILE, UWORD, UDWORD, SDWORD, UCHAR FAR *, BOOL FAR *); SWORD FAR PASCAL dBaseColumnNumVal(LPDBASEFILE, UWORD, SDOUBLE FAR *, BOOL FAR *); SWORD FAR PASCAL dBaseAddRecord(LPDBASEFILE); SWORD FAR PASCAL dBaseSetColumnCharVal(LPDBASEFILE, UWORD, UCHAR FAR *, SDWORD); SWORD FAR PASCAL dBaseSetColumnNull(LPDBASEFILE, UWORD); SWORD FAR PASCAL dBaseDeleteRecord(LPDBASEFILE); SWORD FAR PASCAL dBaseGetBookmark(LPDBASEFILE, UDWORD far *); SWORD FAR PASCAL dBasePosition(LPDBASEFILE, UDWORD); SWORD FAR PASCAL dBaseClose(LPDBASEFILE); SWORD FAR PASCAL dBaseDestroy(LPUSTR); /***************************************************************************/