#ifndef __MAIN_H__ #define __MAIN_H__ #include #include #include // custom datatypes that are nice to have as a reference #define FLDTYPE_STRING 0 #define FLDTYPE_INT 1 #define FLDTYPE_DOUBLE 2 #define FLDTYPE_DATE 3 #define FLDTYPE_INT64 4 #define FLDTYPE_BOOL 5 #define FLDTYPE_UNKNOWN 255 #define FLDFLAG_NORMAL 0 #define FLDFLAG_PRIMARY 1 #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif // a simple struct to put our values into // it would help a lot if we'd wrote some functions around this to make it easier to work with like Pascal's Variant works struct mydll_myvar { long iStrlen; char *sValue; long iValue; double dValue; }; // simple struct to hold info about a field struct mydll_myfield { long iStrlen; char *sName; long iDatatype; long iMaxlen; long iFlags; }; // the functions we're exporting long DLL_EXPORT mydll_createNewConnection(); void DLL_EXPORT mydll_setOptions( long iConn, char *sHost, long iPort, char *sUser, char *sPass ); bool DLL_EXPORT mydll_connect( long iConn ); void DLL_EXPORT mydll_disconnect( long iConn ); bool DLL_EXPORT mydll_selectDatabase( long iConn, char *sDBName ); bool DLL_EXPORT mydll_openQuery( long iConn, char *sQuery ); void DLL_EXPORT mydll_close( long iConn ); bool DLL_EXPORT mydll_isLast( long iConn ); bool DLL_EXPORT mydll_next( long iConn ); long DLL_EXPORT mydll_getFieldCount( long iConn ); long DLL_EXPORT mydll_getRecordCount( long iConn ); bool DLL_EXPORT mydll_fetchField( long iConn, long iIndex, mydll_myfield *pField ); bool DLL_EXPORT mydll_fetchValue( long iConn, long iIndex, long iDatatype, mydll_myvar *pVar ); void DLL_EXPORT mydll_closeConnection( long iConn ); #ifdef __cplusplus } #endif #endif // __MAIN_H__