64x64base

DBF Flavors and Index Defaults

The current x64base DBF flavor matrix and the default index containers used by SET INDEX and SET ORDER.

x64base is an object-oriented hybrid. The runtime centers on DbArea and XBaseEngine objects, while workspaces wrap active areas and preserve table, cursor, index, relation, memo, and metadata state. The storage layer is not only DBF_64; the current headers define a three-part DBF family.

Header trinity

FlavorHeader evidenceRuntime position
Classic / MS-DOS DBFinclude/xbase.hpp, include/xbase_vfp.hpp; versions 0x03, 0x83, and FoxPro memo 0xF5Classic-like V32 area. Uses 10-byte descriptor field names and classic/FoxPro descriptor rules.
Visual FoxPro DBFinclude/xbase_vfp.hpp; versions 0x30, 0x31, 0x32VFP-compatible V64 area with newer field/data type handling, including currency-oriented work and VFP descriptor extras.
x64 DBF_64include/xbase_64.hpp; version 0x64x64 extension layer with large-header metadata, vector table/field names, fallback descriptor tokens, and x64 field metadata.

include/xbase.hpp is the neutral runtime contract. include/xbase_vfp.hpp bridges classic/MS-DOS, FoxPro, and VFP descriptor formats. include/xbase_64.hpp owns the x64 extension structures, vector metadata, and fallback name-resolution policy.

Index defaults

The command handlers make the current default behavior explicit:

Area flavorSET ORDER default containerSET INDEX accepted containersNotes
V32 classic/MS-DOS/FoxPro-like<table>.cnx.inx or .cnxINX is single-order attachment. Tag activation through SET ORDER is handled through CNX, not INX.
V64 VFP/x64<table>.cdx.cdxCDX is the command-facing container; LMDB is the physical backend where the CDX/LMDB environment is in use.

This should be documented as current implementation behavior, not a permanent restriction. The Open Index API lane is the right place to describe future backend-neutral expansion.

Name policy

x64 DBF metadata can carry authoritative table and field names beyond classic DBF descriptor limits. When x64 metadata is missing, the runtime falls back to descriptor tokens and mangled names. That fallback is intentional: old tools can still see a legal DBF-shaped file, while x64-aware code can resolve the richer vector metadata.