⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bullet_2.h

📁 支持Xbase DBF格式的一套函数库的程序
💻 H
📖 第 1 页 / 共 3 页
字号:
 *
 * 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 + -