cdbfapi (C) for Windows
extern "C" {
cdbfapiPlus* cdbfapiCreate();
void cdbfapiRelease(cdbfapiPlus* handle);
void initLibrary(cdbfapiPlus* handle, int magicNumber, char *email);
BOOL openDBFfile(cdbfapiPlus* handle, char *filename);
void closeDBFfile(cdbfapiPlus* handle);
int recCount(cdbfapiPlus* handle);
int fieldCount(cdbfapiPlus* handle);
BOOL getRecord(cdbfapiPlus* handle, int recno);
BOOL readRecord(cdbfapiPlus* handle, int recno);
BOOL writeRecord(cdbfapiPlus* handle, int recno);
BOOL readField(cdbfapiPlus* handle, int recno, int fieldno);
BOOL writeField(cdbfapiPlus* handle, int recno, int fieldno);
int indexOfField(cdbfapiPlus* handle, char* fieldname);
char* getString(cdbfapiPlus* handle, int fieldno);
double getValue(cdbfapiPlus* handle, int fieldno);
struct tm getDateTime(cdbfapiPlus* handle, int fieldno);
__int64 getTicks(cdbfapiPlus* handle, int fieldno);
int getMemoBuf(cdbfapiPlus* handle, int fieldno, char **output);
BOOL isMemoField(cdbfapiPlus* handle, int fieldno);
BOOL isNumericField(cdbfapiPlus* handle, int fieldno);
BOOL isDateField(cdbfapiPlus* handle, int fieldno);
BOOL isCurrentDeleted(cdbfapiPlus* handle);
BOOL isDeleted(cdbfapiPlus* handle, int fieldno);
void clearRecord(cdbfapiPlus* handle);
void clearField(cdbfapiPlus* handle, int fieldno);
void setFieldString(cdbfapiPlus* handle, int fieldno, char* string);
void setFieldDouble(cdbfapiPlus* handle, int fieldno, double value);
void setField(cdbfapiPlus* handle, int fieldno, char* string, double value);
void setMemoBuf(cdbfapiPlus* handle, int fieldno, char *input, int len);
BOOL markAsDeleted(cdbfapiPlus* handle, int fieldno);
BOOL recallDeleted(cdbfapiPlus* handle, int fieldno);
BOOL deleteRecord(cdbfapiPlus* handle, int recno);
BOOL appendRecord(cdbfapiPlus* handle, BOOL blankrecord);
BOOL insertRecord(cdbfapiPlus* handle, int recno, BOOL blankrecord);
void setOrder(cdbfapiPlus* handle, char* fieldlist);
void setOrderA(cdbfapiPlus* handle, char* fields[]);
void unsetOrder(cdbfapiPlus* handle);
void descendingMode(cdbfapiPlus* handle, BOOL descending);
void setFilter(cdbfapiPlus* handle, char* expression);
void unsetFilter(cdbfapiPlus* handle);
void caseSensitiveMode(cdbfapiPlus* handle, BOOL sensitive);
BOOL pack(cdbfapiPlus* handle);
BOOL truncate(cdbfapiPlus* handle, int recno);
BOOL zap(cdbfapiPlus* handle);
int fileType(cdbfapiPlus* handle);
char* filetypeAsText(cdbfapiPlus* handle);
int recordLength(cdbfapiPlus* handle);
char* lastUpdated(cdbfapiPlus* handle);
int headerSize(cdbfapiPlus* handle);
char* filename(cdbfapiPlus* handle);
char* filenameMemo(cdbfapiPlus* handle);
char* driverName(cdbfapiPlus* handle);
void resetLastRecord(cdbfapiPlus* handle);
char* fieldName(cdbfapiPlus* handle, int fieldno);
int fieldData(cdbfapiPlus* handle, int fieldno, char **output);
char fieldType(cdbfapiPlus* handle, int fieldno);
int fieldLength(cdbfapiPlus* handle, int fieldno);
int fieldDecimal(cdbfapiPlus* handle, int fieldno);
char* typeAsText(char c);
void setEncoding(cdbfapiPlus* handle, int e);
void setDateFormat(cdbfapiPlus* handle, char* format);
void setDateDelimiter(cdbfapiPlus* handle, char delimiter);
void setReadOnly(cdbfapiPlus* handle, BOOL value);
BOOL isReadOnly(cdbfapiPlus* handle);
BOOL prepareNewTable(cdbfapiPlus* handle, int fileType);
BOOL prepareNewTableX(cdbfapiPlus* handle, int fileType, int memoSize, char *driver);
void addField(cdbfapiPlus* handle, char* fieldname, char fieldType, int length);
void addFieldX(cdbfapiPlus* handle, char* fieldname, char fieldType, int length, int decimal);
BOOL createTable(cdbfapiPlus* handle, char* filename);
BOOL createAndOpenTable(cdbfapiPlus* handle, char* filename);
void setByte(cdbfapiPlus* handle, int offset, char b);
char getByte(cdbfapiPlus* handle, int offset);
}