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

📄 bullet_2.h

📁 支持Xbase DBF格式的一套函数库的程序
💻 H
📖 第 1 页 / 共 3 页
字号:
ULONG dbfHandle;      /* I, handle of DBF file to which this memo file belongs */
ULONG memoBypass;     /* I, memo bypass function to do, if any */
PVOID memoPtr;        /* I, ptr to memo record buffer */
ULONG memoNo;         /* IO, memo record number (aka block number) */
ULONG memoOffset;     /* I, position within record to start read/update */
ULONG memoBytes;      /* IO, number of bytes to read/update */
} MEMODATAPACK; /* MDP */
typedef MEMODATAPACK *PMEMODATAPACK;

typedef struct _MEMORYPACK {
ULONG func;
ULONG stat;
ULONG memory;         /* O, not used in OS/2 */
} MEMORYPACK; /* MP */
typedef MEMORYPACK *PMEMORYPACK;

typedef struct _OPENPACK {
ULONG func;
ULONG stat;
ULONG handle;         /* O, handle of file opened */
PSZ   filenamePtr;    /* I, Bullet file to open */
ULONG asMode;         /* I, access-sharing-cache mode */
LONG  xbLink;         /* I, if index open, xbLink=handle of its opened DBF */
} OPENPACK; /* OP */
typedef OPENPACK *POPENPACK;

typedef struct _QUERYSETPACK {
ULONG func;
ULONG stat;
ULONG item;           /* I, Bullet sysvar item to get/set */
ULONG itemValue;      /* IO, current/new value */
} QUERYSETPACK; /* QSP */
typedef QUERYSETPACK *PQUERYSETPACK;

typedef struct _REMOTEPACK {
ULONG func;
ULONG stat;
ULONG handle;         /* I, handle of file, or if 0, use RP.drive */
ULONG drive;          /* I, drive (1=A,2=B,3=C,...0=current) to check */
ULONG isRemote;       /* O, =1 of handle/drive is remote, =0 if local */
ULONG flags;          /* O, 0 */
ULONG isShare;        /* O, 1 */
} REMOTEPACK; /* RP */
typedef REMOTEPACK *PREMOTEPACK;

typedef struct _STATDATAPACK {
ULONG func;
ULONG stat;
ULONG handle;         /* I, handle to check */
ULONG fileType;       /* O, bit0=1 data file */
ULONG flags;          /* O, bit0=1 dirty, bit1=1 full-lock, bit2=1 shared */
ULONG progress;       /* O, 0,1-99% pack progress */
PVOID morePtr;        /* O, 0 */
ULONG fields;         /* O, fields per record */
ULONG asMode;         /* O, access-sharing-cache mode */
PSZ   filenamePtr;    /* O, filename used in open */
ULONG fileID;         /* O, first byte of DBF file */
ULONG lastUpdate;     /* O, high word=year,low byte=day, high byte=month */
ULONG records;        /* O, data records (including "deleted") */
ULONG recordLength;   /* O, record length */
ULONG xactionFlag;    /* O, 0 */
ULONG encryptFlag;    /* O, 0 */
PVOID herePtr;        /* O, this file's control address */
ULONG memoHandle;     /* O, handle of open memo file (0 if none) */
ULONG memoBlockSize;  /* O, memo file block size */
ULONG memoFlags;      /* O, bit0=1 dirty */
ULONG memoLastRecord; /* O, last accessed memo record (0 if none) */
ULONG memoLastSize;   /* O, size of last accessed memo record (in bytes, +8) */
ULONG lockCount;      /* O, number of full-locks in force */
} STATDATAPACK; /* SDP */
typedef STATDATAPACK *PSTATDATAPACK;

typedef struct _STATHANDLEPACK {
ULONG func;
ULONG stat;
ULONG handle;         /* I, handle to check */
LONG  ID;             /* O, bit0=1 data file, bit0=1 index file */
} STATHANDLEPACK; /* SHP */
typedef STATHANDLEPACK *PSTATHANDLEPACK;

typedef struct _STATINDEXPACK {
ULONG func;
ULONG stat;
ULONG handle;         /* I, handle to check */
ULONG fileType;       /* O, bit0=0 index file */
ULONG flags;          /* O, bit0=1 dirty, bit1=1 full-lock, bit2=1 shared */
ULONG progress;       /* O, 0,1-99% reindex progress */
PVOID morePtr;        /* O, 0 */
ULONG xbLink;         /* O, XB file link handle */
ULONG asMode;         /* O, access-sharing-cache mode */
PSZ   filenamePtr;    /* O, pointer to filename used in open */
ULONG fileID;         /* O, "31ch" */
PSZ   keyExpPtr;      /* O, pointer to key expression */
ULONG keys;           /* O, keys in file */
ULONG keyLength;      /* O, key length */
ULONG keyRecNo;       /* O, record number of current key */
PVOID keyPtr;         /* O, ptr to current key value (valid to keyLength) */
PVOID herePtr;        /* O, this file's control address */
ULONG codePage;       /* O, code page at create time */
ULONG countryCode;    /* O, country code at create time */
PVOID CTptr;          /* O, collate table ptr, NULL=no collate table present */
ULONG nodeSize;       /* O, node size */
ULONG sortFunction;   /* O, sort function ID */
ULONG lockCount;      /* O, number of full-locks in force */
} STATINDEXPACK; /* SIP */
typedef STATINDEXPACK *PSTATINDEXPACK;

typedef struct _XERRORPACK {
ULONG func;
ULONG stat;           /* I, error to check */
ULONG errClass;       /* O, class of error */
ULONG action;         /* O, action recommended for error */
ULONG location;       /* O, location of error */
} XERRORPACK; /* XEP */
typedef XERRORPACK *PXERRORPACK;


/* ************************************************************************
 *
 * Error codes
 *
 * ************************************************************************/

#define EXB_NOT_ENOUGH_MEMORY   8  /* cannot get memory requested */
#define EXB_INVALID_DRIVE       15 /* not a valid drive letter */
#define EXB_UNEXPECTED_EOF      38 /* unexpect EOF (bytes read != bytes asked) */
#define EXB_DISK_FULL           39 /* disk full on WriteFile */
#define EXB_FILE_EXISTS         80 /* cannot create file since it already exists */
#define EXB_SEM_OWNER_DIED      105 /* in place of Win32 error 80h (mutex) */
#define EXB_TIMEOUT             640 /* in place of Win32 error 102h (mutex) */

/* Other operating system errors are as returned by OS itself */

/* System/general error codes */

#define EXB_OR_WITH_FAULTS      8192 /* 8192+1 to +4, close-type errors */

                                     /* ERR_216501/6 are for Bullet/x only */
#define EXB_216501              8251 /* INT21/6501h not supported by DOS extender */
                                     /* (do not use default cc/cp) */
#define EXB_216506              8256 /* INT21/6506h not supported by DOS extender */
                                     /* (provide a custom collate table) */

#define EXB_ILLEGAL_CMD         8300 /* function not allowed */
#define EXB_OLD_DOS             8301 /* OS version < MIN_DOS_NEEDED */
#define EXB_NOT_INITIALIZED     8302 /* init not active, must do INIT_XB */
#define EXB_ALREADY_INITIALIZED 8303 /* init already active, must do EXIT_XB */
#define EXB_TOO_MANY_HANDLES    8304 /* more than 1024 opens requested */
#define EXB_SYSTEM_HANDLE       8305 /* Bullet won't use or close handles 0-2 */
#define EXB_FILE_NOT_OPEN       8306 /* file not open (not Bullet handle, including xbLink) */
#define EXB_FILE_IS_DIRTY       8307 /* tried to reload header but current still dirty */
#define EXB_BAD_FILETYPE        8308 /* tried key op on non-key file, data op on non... */
#define EXB_TOO_MANY_PACKS      8309 /* too many INSERT,UPDATE,REINDEX,LOCK_XB packs */
#define EXB_NULL_RECPTR         8310 /* null record pointer passed to Bullet */
#define EXB_NULL_KEYPTR         8311 /* null key pointer passed to Bullet */
#define EXB_NULL_MEMOPTR        8312 /* null memo pointer passed to Bullet */
#define EXB_EXPIRED             8313 /* evaluation time period has expired */
#define EXB_BAD_INDEX           8314 /* Query/SetSysVars index beyond last one */
#define EXB_RO_INDEX            8315 /* SetSysVar index item is read-only */
#define EXB_FILE_BOUNDS         8316 /* file size > 4GB, or > system var sets */
#define EXB_FORCE_ROLLBACK      8397 /* rollback test completed (internal use) */
#define EXB_INVALID_DLL         8398 /* DLL seems to be invalid, 8399 same */

/* Multi-access error codes */

#define EXB_BAD_LOCK_MODE       8401 /* lock mode (LP) not valid */
#define EXB_NOTHING_TO_RELOCK   8402 /* cannot relock without existing full-lock */
#define EXB_SHARED_LOCK_ON      8403 /* write access needed but lock is shared (flush on backup) */

/* Index error codes */

#define EXB_KEY_NOT_FOUND       8501 /* exact match of key not found */
#define EXB_KEY_EXISTS          8502 /* key exists already and dups not allowed */
#define EXB_END_OF_FILE         8503 /* already at last index order */
#define EXB_TOP_OF_FILE         8504 /* already at first index order */
#define EXB_EMPTY_FILE          8505 /* nothing to do since no keys */
#define EXB_CANNOT_GET_LAST     8506 /* cannot locate last key */
#define EXB_BAD_INDEX_STACK     8507 /* index file is corrupt */
#define EXB_BAD_INDEX_READ0     8508 /* index file is corrupt */
#define EXB_BAD_INDEX_WRITE0    8509 /* index file is corrupt */

#define EXB_OLD_INDEX           8521 /* old index, run through ReindexOld to update */
#define EXB_UNKNOWN_INDEX       8522 /* not a Bullet index file */
#define EXB_KEY_TOO_LONG        8523 /* keylength > 62 (or 64 if unique), or is 0 */

#define EXB_PARSER_NULL         8531 /* parser function pointer is NULL */
#define EXB_BUILDER_NULL        8532 /* build key function pointer is NULL */
#define EXB_BAD_SORT_FUNC       8533 /* CIP.sortFunction not valid */
#define EXB_BAD_NODE_SIZE       8534 /* CIP.nodeSize is not 512, 1024, or 2048 */
#define EXB_FILENAME_TOO_LONG   8535 /* CIP.filenamePtr->pathname > max path length */

#define EXB_KEYX_NULL           8541 /* expression is effectively NULL */
#define EXB_KEYX_TOO_LONG       8542 /* CIP.keyExpPtr->expression > 159 */
#define EXB_KEYX_SYM_TOO_LONG   8543 /* fieldname/funcname in expression > 10 chars */
#define EXB_KEYX_SYM_UNKNOWN    8544 /* fieldname/funcname in expression unknown */
#define EXB_KEYX_TOO_MANY_SYMS  8545 /* too many symbols/fields used in expression */
#define EXB_KEYX_BAD_SUBSTR     8546 /* invalid SUBSTR() operand in expression */
#define EXB_KEYX_BAD_SUBSTR_SZ  8547 /* SUBSTR() exceeds field's size */
#define EXB_KEYX_BAD_FORM       8548 /* didn't match expected symbol in expression */

#define EXB_NO_READS_FOR_RUN    8551 /* unlikely, use different reindex buffer size */
#define EXB_TOO_MANY_RUNS       8552 /* unlikely, too many runs (64K or more runs) */
#define EXB_TOO_MANY_RUNS_FOR_BUFFER 8553 /* unlikely, too many runs for run buffer */
#define EXB_TOO_MANY_DUPLICATES 8554 /* more than 64K "identical" keys */

#define EXB_INSERT_RECNO_BAD    8561 /* AP.recNo cannot be > 0 if inserting */
#define EXB_PREV_APPEND_EMPTY   8562 /* no prev append for insert yet AP.recNo==80000000h */
#define EXB_PREV_APPEND_MISMATCH 8563 /* prev append's xbLink does not match this */
#define EXB_INSERT_KBO_FAILED   8564 /* could not back out key at INSERT_XB */
#define EXB_INSERT_DBO_FAILED   8565 /* could not back out data records at INSERT_XB */

#define WRN_NOTHING_TO_UPDATE   8571 /* all AP.recNo=0 at UPDATE_XB */
#define EXB_INTERNAL_UPDATE     8572 /* internal error UPDATE_XB, not in hdl/rec# list */

#define EXB_FAILED_DATA_RESTORE 8573 /* could not restore original data record (*) */
#define EXB_FAILED_KEY_DELETE   8574 /* could not remove new key (*) */
#define EXB_FAILED_KEY_RESTORE  8575 /* could not restore original key(*) */
/* *original error, which forced a back-out, has been replaced by this error */ 
/* this error is always returned in the first AP.stat (-1 on data, 1 on index) */

/* Data error codes */

#define EXB_EXT_XBLINK          8601 /* xbLink handle is not internal DBF (is -1) */
#define EXB_FIELDNAME_TOO_LONG  8602 /* fieldname is > 10 characters */
#define EXB_RECORD_TOO_LONG     8603 /* record length is > 64K */
#define EXB_FIELD_NOT_FOUND     8604 /* fieldname not found in descriptor info */
#define EXB_BAD_FIELD_COUNT     8605 /* fields <= 0 or >= MAX_FIELDS (Init,Open) */
                                     /* and also GetDescriptor by field number */
#define EXB_BAD_HEADER          8606 /* bad header (reclen=0, etc., from LocateTo, Flush) */
#define EXB_BUFFER_TOO_SMALL    8607 /* buffer too small (pack buffer < reclen in pack) */
#define EXB_INTERNAL_PACK       8608 /* internal error in PackRecords */
#define EXB_BAD_RECNO           8609 /* record number=0 or > records in data file hdr */
                                     /* or Pack on empty data file */
#define WRN_RECORD_TAGGED       8610 /* record's tag field matches skip tag */

/* Memo error codes */

#define WRN_CANNOT_OPEN_MEMO    8701 /* DBF says memo file but memo open fails */
#define EXB_MEMO_NOT_OPEN       8702 /* no open memo file for operation */
#define EXB_BAD_BLOCKSIZE       8703 /* memo blocksize must be at least 24 bytes */
#define EXB_MEMO_DELETED        8704 /* memo is deleted */
#define EXB_MEMO_PAST_END       8705 /* memo data requested is past end of record */
#define EXB_BAD_MEMONO          8706 /* memo number is not valid */
#define EXB_MEMO_IN_USE         8707 /* memo add encountered likely corrupt memo file */
#define EXB_BAD_AVAIL_LINK      8708 /* memo avail link cannot be valid (is 0) */
#define EXB_MEMO_ZERO_SIZE      8709 /* memo data has no size */
#define EXB_MEMO_IS_SMALLER     8710 /* memo attempt to shrink but already <= size */

#endif /* ifndef __BULLET_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -