📄 bullet_2.h
字号:
*
* operating system file I/O equates
*
* ************************************************************************/
#define READONLY 0x00000000 /* std file access mode */
#define WRITEONLY 0x00000001 /* no underscore used for std equates */
#define READWRITE 0x00000002
#define DENYREADWRITE 0x00000010 /* std file share mode, cannot be 0 */
#define DENYWRITE 0x00000020
#define DENYREAD 0x00000030
#define DENYNONE 0x00000040
#define NOINHERIT 0x00000080
#define NO_LOCALITY 0x00000000 /* optional cache modes */
#define SEQ_LOCALITY 0x00010000
#define RND_LOCALITY 0x00020000
#define MIX_LOCALITY 0x00030000
#define SKIP_CACHE 0x00100000 /* not inherited by child process */
#define WRITE_THROUGH 0x00400000 /* not inherited by child process */
#define LOCK_SHARED 1 /* a read-only lock, OS/2 and NT only */
#define LOCK_EXCLUSIVE 0 /* default */
/* ************************************************************************
*
* .sortFunction IDs, Query/SetSysVars|Vectors item IDs
*
* ************************************************************************/
// SORT_SET flag: USE_*_CHARSET defaults to OEM character set, and is used
// (OEM or ANSI) if the .sortFunction is NLS or a custom sort-compare.
#define USE_OEM_CHARSET (0 << 17) /* for DOSX32, OS/2, and Windows */
#define USE_ANSI_CHARSET (1 << 17) /* for Windows (.sortFunction flag) */
#define DUPS_ALLOWED (1 << 16) /* allow duplicate keys (.sortFunction flag) */
/* All Bullet system vars set to default values at INIT_XB */
/* Sorts 1-19 also used as CIP.sortFunction (can be OR'ed with DUPS_ALLOWED) */
/* Intrinsic sorts (1-6) are read-only (R-O) */
#define ASCII_SORT 1 /* sort by: ASCII value (R-O) */
#define NLS_SORT 2 /* NLS (R-O) */
#define S16_SORT 3 /* 16-bit signed integer (R-O) */
#define U16_SORT 4 /* 16-bit unsigned integer (R-O) */
#define S32_SORT 5 /* 32-bit signed integer (R-O) */
#define U32_SORT 6 /* 32-bit unsigned integer (R-O) */
/* sorts 7 to 9 are reserved */
/* Custom sort-compare functions are from 10 to 19 */
#define BUILD_KEY_FUNC 20 /* key build function ptr */
#define PARSER_FUNC 21 /* key expression parser function ptr */
#define MUTEX_SEM_HANDLE 29 /* handle of Bullet's mutex semaphore (R-O) */
#define LOCK_TIMEOUT 30 /* lock-wait timeout (default=0, no wait)*/
#define MUTEX_SEM_TIMEOUT 31 /* mutex semaphore-wait timeout (def=0,none) */
#define PACK_BUFFER_SIZE 32 /* pack buffer size (def=0, min autosize) */
#define REINDEX_BUFFER_SIZE 33 /* reindex buffer size (def=0, min autosize) */
#define REINDEX_PACK_PCT 34 /* reindex node pack % (default=100, max) */
#define TMP_PATH_PTR 35 /* temporary file path ptr (default=NULL) */
#define REINDEX_SKIP_TAG 36 /* index skip tag select (default=0, none) */
#define COMMIT_AT_EACH 37 /* commit each insert/update in pack (def=0) */
#define MEMO_BLOCKSIZE 38 /* memo block size (default=512 bytes) */
#define MEMO_EXTENSION 39 /* memo filename extension (default='DBT\0') */
#define MAX_DATAFILE_SIZE 40 /* max data size (default=0x7FEFFFFF=2095MB) */
#define MAX_INDEXFILE_SIZE 41 /* max index size (default=0x7FEFFFFF=2095MB)*/
#define ATOMIC_MODE 42 /* bit0=1 atomic next/prev key access (def=0)*/
#define CALLBACK_PTR 43 /* callback at reindex/pack (def=0, none) */
/* ************************************************************************
*
* Query/SetVectors vector IDs
*
* ************************************************************************/
#define VECTOR_CLOSE_FILE 2
#define VECTOR_CREATE_DIR 3
#define VECTOR_CREATE_FILE 4
#define VECTOR_CREATE_UNIQUE_FILE 5
#define VECTOR_DELETE_FILE 6
#define VECTOR_LENGTH_FILE 7
#define VECTOR_MOVE_FILE 8
#define VECTOR_OPEN_FILE 9
#define VECTOR_READ_FILE 10
#define VECTOR_SEEK_FILE 11
#define VECTOR_UPDATE_DIR_ENTRY 12
#define VECTOR_WRITE_FILE 13
#define VECTOR_LOCK_FILE 14
#define VECTOR_IS_DRIVE_REMOTE 15
#define VECTOR_IS_FILE_REMOTE 16
#define VECTOR_EXITLIST 17
#define VECTOR_REMOVE_EXITLIST 18
#define VECTOR_FREE 19
#define VECTOR_GET_SORT_TABLE 20
#define VECTOR_GET_COUNTRY_INFO 21
#define VECTOR_GET_ERROR_CLASS 22
#define VECTOR_GET_MEMORY 23
#define VECTOR_GET_TMP_DIR 24
#define VECTOR_GET_VERSION 25
#define VECTOR_MALLOC 26
#define VECTOR_SET_HANDLE_COUNT 27
#define VECTOR_GET_TIME_INFO 28
#define VECTOR_UPPERCASE 29
#define VECTOR_CLOSE_MUTEX_SEM 30
#define VECTOR_CREATE_MUTEX_SEM 31
#define VECTOR_RELEASE_MUTEX_SEM 32
#define VECTOR_REQUEST_MUTEX_SEM 33
/* ************************************************************************
*
* Parameter pack structures, typedefs
*
* ************************************************************************/
/* AP, CP, CDP, etc., are suggested variable names */
typedef struct _ACCESSPACK {
ULONG func;
ULONG stat;
ULONG handle; /* I, handle of Bullet file to access */
LONG recNo; /* IO, record number */
PVOID recPtr; /* I, programmer's record buffer */
PVOID keyPtr; /* I, programmer's key buffer */
PVOID nextPtr; /* I, NULL if not xaction, else next AP in list */
} ACCESSPACK; /* AP */
typedef ACCESSPACK *PACCESSPACK;
/* CBP is the structure received by the callback procedure */
/* structure members are filled in by Bullet */
typedef struct _CALLBACKPACK {
ULONG sizeIs; /* structure size (current 16 bytes) */
ULONG callMode; /* 0=from reindex; 1=from DBF pack */
ULONG handle; /* file handle */
ULONG data1; /* for callMode=0/1: progress percent (1-99,0) */
} CALLBACKPACK; /* CBP */
typedef CALLBACKPACK *PCALLBACKPACK;
typedef struct _COPYPACK {
ULONG func;
ULONG stat;
ULONG handle; /* I, handle of Bullet file to copy */
PSZ filenamePtr; /* I, filename to use (drv+path must exist if used) */
} COPYPACK; /* CP */
typedef COPYPACK *PCOPYPACK;
typedef struct _CREATEDATAPACK {
ULONG func;
ULONG stat;
PSZ filenamePtr; /* I, filename to use */
ULONG noFields; /* I, 1 to 254 */
PVOID fieldListPtr; /* I, descriptor list, 1 per field */
ULONG fileID; /* I, 0x03 for standard DBF, 0x8B if memo file also */
} CREATEDATAPACK; /* CDP */
typedef CREATEDATAPACK *PCREATEDATAPACK;
typedef struct _CREATEINDEXPACK {
ULONG func;
ULONG stat;
PSZ filenamePtr; /* I, filename to use */
PSZ keyExpPtr; /* I, e.g., "SUBSTR(LNAME,1,4)+SSN" */
LONG xbLink; /* I, opened data file handle this indexes */
ULONG sortFunction; /* I, 1-9 system, 10-19 custom */
ULONG codePage; /* I, 0=use process default */
ULONG countryCode; /* I, 0=use process default */
PVOID collatePtr; /* I, NULL=use cc/cp else use passed table for sort */
ULONG nodeSize; /* I, 512, 1024, or 2048 */
} CREATEINDEXPACK; /* CIP */
typedef CREATEINDEXPACK *PCREATEINDEXPACK;
typedef struct _FIELDDESCTYPE {
BYTE fieldName[11]; /* IO, upper A-Z and _; 1-10 chars, 0-filled, 0-term */
BYTE fieldType; /* IO, C,D,L,N, or M */
LONG fieldDA; /* x, offset within record (run-time storage option) */
BYTE fieldLen; /* IO, C=1-255,D=8,L=1,N=1-19,M=10 */
BYTE fieldDC; /* IO, fieldType=N then 0-15 else 0 */
USHORT altFieldLength;/* IO, 0 */
BYTE filler[12]; /* I, 0 */
} FIELDDESCTYPE; /* nested in _DESCRIPTORPACK */
typedef FIELDDESCTYPE *PFIELDDESCTYPE;
typedef struct _DESCRIPTORPACK {
ULONG func;
ULONG stat;
ULONG handle; /* I, handle of DBF file */
ULONG fieldNumber; /* IO, first field is 1 */
ULONG fieldOffset; /* O, offset of field within record (tag=offset 0) */
FIELDDESCTYPE FD; /* IO FD.fieldName only, O for rest of FD */
} DESCRIPTORPACK; /* DP */
typedef DESCRIPTORPACK *PDESCRIPTORPACK;
typedef struct _DOSFILEPACK {
ULONG func;
ULONG stat;
PSZ filenamePtr; /* I, filename to use */
ULONG handle; /* IO, handle of open file */
ULONG asMode; /* I, access-sharing mode */
ULONG bytes; /* IO, bytes to read, write, length of */
LONG seekTo; /* IO, seek to offset, current offset */
ULONG method; /* I, seek method (0=start of file, 1=current, 2=end) */
PVOID bufferPtr; /* I, buffer to read into or write from */
ULONG attr; /* I, attribute to create file with */
PSZ newNamePtr; /* I, name to use on rename */
} DOSFILEPACK; /* DFP */
typedef DOSFILEPACK *PDOSFILEPACK;
typedef struct _EXITPACK {
ULONG func;
ULONG stat;
} EXITPACK; /* EP */
typedef EXITPACK *PEXITPACK;
typedef struct _HANDLEPACK {
ULONG func;
ULONG stat;
ULONG handle; /* I, handle of Bullet file */
} HANDLEPACK; /* HP */
typedef HANDLEPACK *PHANDLEPACK;
typedef struct _INITPACK {
ULONG func;
ULONG stat;
ULONG JFTsize; /* I, max opened files (20-1024+) */
ULONG versionDOS; /* O, e.g., 230 for 2.30 */
ULONG versionBullet; /* O, e.g., 2019 for 2.019 */
ULONG versionOS; /* O, e.g., 4=OS/2 32-bit */
PVOID exitPtr; /* O, function pointer to EXIT_XB routine */
} INITPACK; /* IP */
typedef INITPACK *PINITPACK;
typedef struct _LOCKPACK {
ULONG func;
ULONG stat;
ULONG handle; /* I, handle of Bullet file to lock */
ULONG xlMode; /* I, index lock mode (0=exclusive, 1=shared) */
ULONG dlMode; /* I, data lock mode (0=exclusive, 1=shared) */
LONG recStart; /* I, if data, first record # to lock, or 0 for all */
ULONG recCount; /* I, if data and recStart!=0, # records to lock */
PVOID nextPtr; /* I, NULL if not xaction, else next LP in list */
} LOCKPACK; /* LP */
typedef LOCKPACK *PLOCKPACK;
typedef struct _MEMODATAPACK {
ULONG func;
ULONG stat;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -