spiegel-keyman/developer
Marc Durdin 57e0e6941d refactor(core): add support for header.version to Core LDML
This substantial refactor reorganizes the header data for sections in
the Core LDML processor. The change was substantial because of
assumptions made about the binary layout of sections. In order to make
the code easier to maintain, safer, and more resilient to future
changes, I opted to make a consistent helper for each section, and copy
header data so that it could be transparently reused.

The principal changes are:

1. Support the version field in the COMP_KMXPLUS_HEADER struct, and
   split it into COMP_KMXPLUS_HEADER_17 and COMP_KMXPLUS_HEADER_19
   versions.
2. Establish a corresponding COMP_KMXPLUS_XXXX_Helper clas for each
   section.
3. Refactor the majority of rawData accesses into using helper
   functions, which reduces direct pointer manipulation and adds extra
   boundary checks.

A special-case exists for BKSP - it is identical to TRAN, except for
its section ident. In order to avoid a complicated pattern for handling
it, I have special-cased it in one place, adding an overloaded
`get_section_from_sect` function for COMP_KMXPLUS_BKSP.

An opportunity exists to refactor a bit further - reduce direct access
to the binary data (through the COMP_KMXPLUS_XXXX structs, and instead
promote use of the COMP_KMXPLUS_XXXX_Helper classes). This indirection
would  reduce duplication of data access and make it cleaner when we
start doing multi-version code.

Next commit will add unit tests for v19 format files.
2025-10-22 05:48:23 +02:00
..
config feat(developer): add api-extractor and api-documenter and config 2024-02-26 11:37:32 +07:00
docs change(developer): add unit test to verify special key cap definitions 2025-10-16 12:37:44 +02:00
src refactor(core): add support for header.version to Core LDML 2025-10-22 05:48:23 +02:00
.gitignore chore(developer): move server with no changes 2022-05-23 12:15:34 +10:00
build.sh maint(common): consolidate builder scripts 2025-08-02 08:11:24 +10:00