// Used for defining external dll extensions on mfInit
typedef struct {
int extType; // Type of extension
char extDLLName[128]; // Name of DLL extension
} tmfExtDLL;
typedef tmfExtDLL FAR * ptmfExtDLL;
// Currently supported DLL extensions
// value for a UDK extension DLL
#define EXT_UDK 0
#define EXT_UDK_NAME "mfUDK"
// Constant variable sizes
// (note: These MAY change to unsigned longs to support DB's up to
// 4GB's (as opposed to 2GB's...) Try to use these as your parameters
// where they are shown in the API calls...
#define RPTR long
#define IPTR long
#define FPDATA char FAR *
// Handle to a MF database
#define hMF_DB int
// SEEK information
#define MFSEEK_BOF -1
#define MFSEEK_EOF -2
#define MFSEEK_NODATA -3
// iCode (passed integer) RETURN values
#define MFSEEK_EXACT_MATCH 1
#define MFSEEK_PARTIAL_MATCH 2
// Compare Information (Index sort orders)
#define MFCOMP_CHAR 1
#define MFCOMP_INT 2
#define MFCOMP_LONG 3
#define MFCOMP_CHARIC 4
#define MFCOMP_UDK 100 // Or greater
// READ/WRITE options
#define MFRW_ALL -1
#define MFRW_DATA -2
#define MFRW_KEY -3
//#define MFRW_KEYEXACT 0 // Index # to write for a KEYEXACT (unsupported in this release)
// Severe-Performance options
#define MF_SP_COUNT -1
/*
ERRORS RETURNED
*/
// Open
#define ERR_OPEN_UNDEFINED -10
#define ERR_OPEN_NOHNDLS -11
#define ERR_OPEN_INVALIDFILE -12
#define ERR_OPEN_INVALIDFORMAT -14
#define ERR_OPEN_NO_DBINIFILE -15
#define ERR_OPEN_UDK_NOT_FOUND -16
// Close
#define ERR_CLOSE_BAD -21
// Write
#define ERR_WRITE_BADRECORD -31
#define ERR_WRITE_NOLOCK -32
// Read
#define ERR_READ_BADRECORD -41
// Append
#define ERR_APPEND_NOADD -51
// Register
#define ERR_REG_NOTASKS -61
#define ERR_INIT_UDK_NOT_FOUND -16
// CreateDB
#define ERR_CREATEDB_BADFILE -71
#define ERR_CREATEDB_BADRECSIZE -72
// Create Index
#define ERR_CREATEINDEX_BADFILE -81
// Update Index
#define ERR_UPDINDEX_BADSEQ -91
#define ERR_X_NOOLDKEY -92
#define ERR_X_NOADDKEY -93
// Splits
#define ERR_SPLIT_NOROOM -101
// GENERAL
#define ERR_EOF -2
#define ERR_BOF -1
// These usually generate if you haven't been
// verifying your RETURN codes...(They tell you
// that you passed a NEGATIVE value as a parameter...)
#define ERR_BAD_TASKSELECTOR -220
#define ERR_BAD_HNDLSELECTOR -221
#define ERR_BAD_INDEXSELECTOR -222
#define ERR_BAD_EVERYTHING -223
// DEFINITIONS
// Data Manipulation
int FAR PASCAL _export mfWrite(RPTR Record, FPDATA dFill, int Task, hMF_DB dbHndl, int Option );
int FAR PASCAL _export mfRead (RPTR Record, FPDATA dFill, int Task, hMF_DB dbHndl, int Option );
int FAR PASCAL _export mfDelete(RPTR Record, int Task, hMF_DB dbHndl);
RPTR FAR PASCAL _export mfAppendData(FPDATA dFill, int Task, hMF_DB dbHndl);
// Movement
RPTR FAR PASCAL _export mfSeek(FPDATA SkStr, int FAR * Code, int Task, hMF_DB dbHndl, int iHndl);
RPTR FAR PASCAL _export mfSkip(RPTR record, long NumSkip, int Task, hMF_DB dbHndl, int idxNumber);
RPTR FAR PASCAL _export mfTop(int Task, hMF_DB dbHndl, int idxNumber);
RPTR FAR PASCAL _export mfBottom(int Task, hMF_DB dbHndl, int idxNumber);
// Creation
int FAR PASCAL _export mfCreateIndex(LPSTR FileName, int RecSize, int DataType, int NumOfIndexes);
int FAR PASCAL _export mfCreateDB(LPSTR FileName, int dRecSize, int NumIndex, int FAR * iRecSize, int FAR * iType);
// General stuff
int FAR PASCAL _export mfInfoDB(int FAR * RecSize, int FAR * NumIndexs, RPTR FAR * NumRecs, int Task, hMF_DB dbHndl);
int FAR PASCAL _export mfInfoIndex(int Task, hMF_DB dbHndl, int iHndl);
// Administrative
int FAR PASCAL _export mfOpen( LPSTR FileName, int Task);
int FAR PASCAL _export mfClose(int Task, hMF_DB dbHndl);
int FAR PASCAL _export mfInit( ptmfExtDLL szExtCalls );
int FAR PASCAL _export mfDeInit(int Task);
// Severe-performance functions
long FAR PASCAL _export mfReadList(RPTR record, FPDATA passStr, int FuzzyMatch, RPTR FAR * hitList, long MaxNumHitsWanted, int Task, hMF_DB dbHndl, int iHndl);