home *** CD-ROM | disk | FTP | other *** search
- /*
- * dbmgr.h
- *
- * This file contains structures, macros and #defines for
- * the database layout.
- *
- * Copyright (C) 1989, 1990, 1991 by Daytris. All rights reserved.
- */
-
- /* DBTALK prototypes */
- DWORD FAR PASCAL DbClose( HANDLE);
- DWORD FAR PASCAL DbFlush( HANDLE);
- DWORD FAR PASCAL DbOpen( HWND, LPSTR, LPSTR, HANDLE *);
- DWORD FAR PASCAL DbRecordAdd( HANDLE, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordDelete( HANDLE, LPSTR);
- DWORD FAR PASCAL DbRecordFindByKey( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordFindFirst( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbRecordFindLast( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbRecordFindNext( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbRecordFindPrev( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbRecordGetByKey( HANDLE, LPSTR, LPSTR, HANDLE, HANDLE);
- DWORD FAR PASCAL DbRecordGetCurrency( HANDLE, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordGetCurrent( HANDLE, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordGetFirst( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordGetLast( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordGetNext( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordGetPrev( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordUpdate( HANDLE, LPSTR, HANDLE);
- DWORD FAR PASCAL DbRecordUpdCurrency( HANDLE, LPSTR, HANDLE);
- DWORD FAR PASCAL DbSetAdd( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbSetDelete( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbSetFindFirst( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbSetFindLast( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbSetFindNext( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbSetFindPrev( HANDLE, LPSTR, LPSTR);
- DWORD FAR PASCAL DbSetGetFirst( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbSetGetLast( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbSetGetNext( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbSetGetOwner( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL DbSetGetPrev( HANDLE, LPSTR, LPSTR, HANDLE);
- DWORD FAR PASCAL XDbRecordAdd( HANDLE, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordFindByKey( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetByKey( HANDLE, LPSTR, LPSTR, LPVOID, short, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetCurrency( HANDLE, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetCurrent( HANDLE, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetFirst( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetLast( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetNext( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordGetPrev( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordUpdate( HANDLE, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbRecordUpdCurrency( HANDLE, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbSetGetFirst( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbSetGetLast( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbSetGetNext( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbSetGetOwner( HANDLE, LPSTR, LPSTR, LPVOID, short);
- DWORD FAR PASCAL XDbSetGetPrev( HANDLE, LPSTR, LPSTR, LPVOID, short);
-
- /* Error defines */
- #define E_TESTDRIVE -5
- #define E_WINALLOC -4
- #define E_LOADMODULE -3
- #define E_INVALIDCASE -2
- #define E_DOS -1
- #define E_NORECNAME 1
- #define E_NOFLDNAME 2
- #define E_INVALIDSET 3
- #define E_NOTAKEY 4
- #define E_NOTFOUND 5
- #define E_NEXTGUESS 6
- #define E_NOCURRENT 7
- #define E_NONEXT 8
- #define E_NOPREV 9
- #define E_NOMEMBER 10
- #define E_NOOWNER 11
- #define E_ALREADYOPEN 12
-
-
- /************************************************
- * CDB Internals
- ************************************************/
-
- /* DBCALL.C prototypes */
- DWORD DbCall( HANDLE, WORD, ...);
- DWORD XDbCall( HANDLE, WORD, ...);
-
- /* CDB Server Name */
- #define CDB_SERVER "dbserver.exe"
- #define CDB_SERVER_CLASS "CDBServerClass"
-
- /* Structure passed between client and server */
- typedef struct sCDBTALK
- {
- WORD wCall;
- char szName1[67];
- char szName2[32];
- HANDLE hData1;
- HANDLE hData2;
- } CDBTALK;
-
- /* Type definitions */
- typedef char CHAR;
- typedef unsigned char UCHAR;
- typedef short INT;
- typedef unsigned short UINT;
- typedef unsigned long ULONG;
-
- /* DBMGR.C prototype */
- INT cdb( INT, ...);
-
- /* Database call defines */
- #define D_OPEN 0
- #define D_CLOSE 1
- #define D_FLUSH 2
- #define D_GET_CURRENCY 3
- #define D_UPDATE_CURRENCY 4
- #define D_FIND_FIRST_RECORD 5
- #define D_FIND_LAST_RECORD 6
- #define D_FIND_NEXT_RECORD 7
- #define D_FIND_PREV_RECORD 8
- #define D_FIND_RECORD_BY_KEY 9
- #define D_GET_FIRST_RECORD 10
- #define D_GET_LAST_RECORD 11
- #define D_GET_NEXT_RECORD 12
- #define D_GET_PREV_RECORD 13
- #define D_GET_RECORD_BY_KEY 14
- #define D_GET_CURRENT_RECORD 15
- #define D_ADD_RECORD 16
- #define D_UPDATE_RECORD 17
- #define D_DELETE_RECORD 18
- #define D_FIND_FIRST_SET 19
- #define D_FIND_LAST_SET 20
- #define D_FIND_NEXT_SET 21
- #define D_FIND_PREV_SET 22
- #define D_GET_FIRST_SET 23
- #define D_GET_LAST_SET 24
- #define D_GET_NEXT_SET 25
- #define D_GET_PREV_SET 26
- #define D_GET_SET_OWNER 27
- #define D_ADD_SET 28
- #define D_DELETE_SET 29
-
- #define NBRHANDLES 8 /* Maximum number of file handles */
- #define MAXKEY 8 /* Maximum # of keys per key record */
- #define KEYPAGESIZE 512 /* Key page buffer size */
- #define NBRPAGES 16 /* Number of key page buffers */
- #define DATAPAGESIZE 2048 /* Data page buffer size */
- #define DATASLOTSIZE 1024 /* Data file slot buffer size */
-
- /* Testdrive version defines */
- #define TESTDRIVE_MAX_RECORDS 50L
-
- /* Field index structure defines */
- #define KEY_FIELD 0x01
- #define SET_KEY_FIELD 0x01
-
- /* Handle index structure defines */
- #define FILE_MODIFIED 0x01
-
- /* Key file index structure defines */
- #define PAGE_FULL 0x01
-
- /* Page index structure defines */
- #define PAGE_DIRTY 0x01
-
- /* DataBase structures and unions */
- union type
- {
- CHAR charval;
- INT intval;
- LONG longval;
- float floatval;
- double doubleval;
- CHAR *ptrval;
- UCHAR ucharval;
- UINT uintval;
- ULONG ulongval;
- };
-
- struct dbheader /* 128 bytes */
- {
- CHAR title[96]; /* DBD title */
- UINT totrecs; /* Total number of records */
- UINT totowns; /* Total number of owners */
- UINT totmems; /* Total number of members */
- UINT totflds; /* Total number of fields */
- CHAR prefix[6]; /* File prefix description */
- CHAR filler[18];
- };
-
- struct record_index /* 46 bytes */
- {
- UINT firstown; /* First owner */
- UINT nbrowns; /* Number of owners */
- UINT firstmem; /* First member */
- UINT nbrmems; /* Number of members */
- UINT firstfld; /* First field */
- UINT nbrflds; /* Number of fields */
- UINT reclen; /* Record length */
- CHAR recname[32]; /* Record name */
- };
-
- struct owner_index /* 4 bytes */
- {
- UINT nextown; /* Next owner */
- UINT ownnum; /* Owner record number */
- };
-
- struct member_index /* 8 bytes */
- {
- UINT nextmem; /* Next member */
- UINT memnum; /* Member record number */
- UINT memkeyfld; /* Key field number for set */
- UINT memflags; /* Bit 0 - key field present */
- };
-
- struct field_index /* 40 bytes */
- {
- UCHAR fldtype; /* Field type Bit 0 - char */
- /* Bit 1 - int */
- /* Bit 2 - short */
- /* Bit 3 - long */
- /* Bit 4 - float */
- /* Bit 5 - double */
- /* Bit 7 - unsigned */
- UINT fldlen; /* Field length */
- UINT flddim; /* Field dimension */
- CHAR fldname[32]; /* Field name */
- UINT fldkey; /* Key number of data struct */
- UCHAR fldflags; /* Bit 0 - key field */
- };
-
- /* Field casting defines */
- #define FLDTYPE_CHAR 0x01
- #define FLDTYPE_INT 0x02
- #define FLDTYPE_SHORT 0x04
- #define FLDTYPE_LONG 0x08
- #define FLDTYPE_FLOAT 0x10
- #define FLDTYPE_DOUBLE 0x20
- #define FLDTYPE_UNSIGNED 0x80
-
- struct key_file_index /* 32 bytes */
- {
- CHAR name[12]; /* Key file name */
- UINT nextavailpage; /* Next available page */
- UINT firstdelpage; /* First page in the delete */
- /* chain. */
- UINT pagenbr[MAXKEY]; /* Key 1st page index */
- };
-
- struct key_page_index /* 10 bytes */
- {
- UINT prevpage; /* Previous page in sort tree */
- UINT nextpage; /* Next page in sort tree */
- UINT slotsused; /* Number of slots used on page */
- UINT slotsize; /* Size of key slot */
- UINT flags; /* Bit 0 - page is full */
- };
-
- struct data_file_index /* 32 bytes */
- {
- CHAR name[12]; /* Data file name */
- ULONG nextavailslot; /* Next available slot */
- ULONG firstdelslot; /* First slot in the delete */
- /* chain. */
- UINT slotsize; /* Size of data slot */
- CHAR filler[10];
- };
-
- struct data_slot_index /* 6 bytes */
- {
- UINT offsettodata; /* Offset to actual data */
- ULONG nextdel; /* DBA of next member in the */
- /* delete chain. */
- };
-
- struct ownptr_index /* 8 bytes */
- {
- ULONG firstmem; /* Dba of first member */
- ULONG lastmem; /* Dba of last member */
- };
-
- struct memptr_index /* 12 bytes */
- {
- ULONG owndba; /* Dba of owner record */
- ULONG prevmem; /* Dba of prev member in chain */
- ULONG nextmem; /* Dba of next member in chain */
- };
-
- struct handle_index /* 4 bytes */
- {
- INT handle; /* Handle number */
- UINT flags; /* Bit 0 - set if modified */
- };
-
- struct page_index /* 520 bytes */
- {
- UINT recnbr; /* Record number */
- UINT fldnbr; /* Field number */
- UINT diskpagenbr; /* Page number */
- CHAR buffer[KEYPAGESIZE]; /* Data buffer */
- UINT flags; /* Bit 0 - set if page is dirty */
- };
-
- struct currency_index /* 36 bytes */
- {
- struct
- {
- UINT page;
- UINT slot;
- } keydba[MAXKEY]; /* Array of key dba's */
- ULONG datadba; /* Data database address */
- };