c04c9aeaa8a4fdb2644b234e8dfd8264d03dadac
Core change: - dbf.KeyEvalFunc: global callback set by gengo before OrderCreate - evalKeyExprInner default case: calls KeyEvalFunc for unknown functions - Final fallback: any unresolvable expression → KeyEvalFunc → MacroEval - valueToKeyBytes: converts MacroEval result to index key bytes - gengo: sets dbf.KeyEvalFunc = t.MacroEval before OrderCreate, clears after Examples that now work: INDEX ON MyFunc(FIELD->NAME) TO idx // UDF in key expression INDEX ON CityKey(FIELD->CITY, NAME) TO idx // multi-param UDF INDEX ON Left(MyFunc(NAME), 15) TO idx // nested built-in + UDF Also fixed: - SET ORDER TO n: int→string via hbrt.NtoS (was empty string) - CDX compound leaf decoder: proper bit-packed tag name extraction - CDX compound recNo = direct byte offset (not page number) All existing tests pass, NTX 47/47 + CDX 20/20 Harbour compat maintained. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Description
Five — Harbour+Go Fusion Language (PRG→Go native binary)
Languages
Go
57.9%
xBase
22%
C
19.5%
Shell
0.5%
Makefile
0.1%