All Bullet database toolkits are year2000-compatible.
Data file format: DBF max recs: 2³² max recLen: 65,520 bytes max fldLen: 32,000 bytes Memo file format: DBT (w/reusable memo space) max memos: 2³² max memo size: 2³² bytes Index file format: IX4 (B*-tree) max key length: 196 bytes node size: 512 to 2560 bytes max nodes: 2³² max keys per node: 255 max keys: 2³²+ Data static data: < 1K bytes (< 10 global vars, essentially read-only) per data header: < 256 bytes (user allocated) per index header: 2K to 4K bytes (user allocated) Code code size: < 64K bytes Threads max threads: unlimited (limit of operating system and available memory) File System max files: unlimited (limit of operating system and available memory) max size: 2³¹ bytes (NT is runtime switchable to 63-bit max size, coming soon) Encryption on data record: yes on index key: yes transparent: yes (disk is always encrypted; Blt*() API is always plaintext) method: callback (any crypto can be used, such as Blowfish) Calling convention Win32 DLL: stdcall Win16 DLL: PASCAL (far pointers) OS/2 DLL: syscall DOSX32: cdecl (Watcom/DOS4Gx) MS-DOS: cdecl (far pointers)Built-in data types supported
Standard types:
fieldType | type | size | example | notes |
---|---|---|---|---|
C | character | 1-254 (1-32000) | "40th Floor"
| with or without 0T |
N | numeric | 1-18 | ' 123.45'
| right-justified, decimal-aligned, no 0T |
D | date | 8 | '20001231'
| YYYYMMDD, no 0T |
L | logical | 1 | 'T'
| T,F,t,f,Y,N,y,n,<space> |
M | memo | 10 | '0000000001'
| memo #, blank if none, leading 0s or <spaces>, no 0T |
Common extended types:
fieldType | type | size | example | notes |
---|---|---|---|---|
F | numeric | 1-18 | ' 123.45'
| same as N |
B | memo | 10 | ' 2'
| binary memo field; same as M |
G | memo | 10 | ' '
| general memo field; same as M |
Bullet 3.0 extended types:
fieldType | type | size | example | notes |
---|---|---|---|---|
SORT_MIXED_S16 ('3')
| signed short | 2 | SHORT
| requires SORT_MIXED sortCmpCode |
SORT_MIXED_U16 ('4')
| unsigned short | 2 | USHORT
| requires SORT_MIXED sortCmpCode |
SORT_MIXED_S32 ('5')
| signed long | 4 | LONG
| requires SORT_MIXED sortCmpCode |
SORT_MIXED_U32 ('6')
| unsigned long | 4 | ULONG
| requires SORT_MIXED sortCmpCode |
SORT_MIXED_S64 ('7')
| 64-bit long | 8 | INT64
| requires SORT_MIXED sortCmpCode |
SORT_MIXED_U64 ('8')
| 64-bit unsigned long | 8 | UINT64
| requires SORT_MIXED sortCmpCode |
SORT_MIXED_DBL ('Y')
| IEEE FP double | 8 | DOUBLE
| requires SORT_MIXED sortCmpCode |
The above types may be used in key fields (alone or mixed) since these fields are intrinsic to Bullet. Any datatype may be used, however, not just those directly supported.
NLS sorting is available, as are SUBSTR, UPPER, and DESCEND modifiers. Custom key building
and sort comparisons are available via callbacks. Callbacks within reindex, sort and pack
routines are also available (so you can put up a % completed window, or handle the message
queue in Win3x). The file system calls may be replaced, letting you handle all disk I/O
with your own code.