Story: ORE XML codegen

Table of Contents

This page documents a story in Sprint 10. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

Add a dedicated ores.ore component and generate the C++ for ORE XML configuration via xsdcpp, with the fixes needed to make real ORE samples round-trip.

Status

Field Value
State DONE
Parent sprint Sprint 10
Now Completed 2026-01-27.
Waiting on None.
Next None.
Last touched 2026-01-27

Acceptance

  • ores.ore component present.
  • xsdcpp integrated; manually-written types replaced.
  • xs:group ref expansion + xs:choice maxOccurs unbounded handled.
  • XML round-trip tests against real ORE sample files.
  • Windows MSVC build green (/bigobj).

Tasks

Task State Start End Description
Add ores.ore component for import/export DONE 2026-05-19 2026-01-25 Dedicated component for ORE (Open Source Risk Engine) import/export work; directory + CMake + stubs + arch docs updated.
Generate C++ code for ORE via xsdcpp DONE 2026-05-19 2026-01-25 xsdcpp integrated; manually-crafted CurrencyConfig/CurrencyElement replaced by generated types; artefact_type domain centralises target_table + populate_function lookup; dq_populate_*_fn naming convention enforced; currency rounding-type values corrected.
Fix issues with xsdcpp when generating ORE code DONE 2026-05-19 2026-01-27 xs:group ref expansion (trade data types: SwapData, FxForwardData); xs:choice maxOccurs='unbounded' → xsd::vector<T> (LGM in InterestRateModels); domain regenerated; XML round-trip tests; ore_xsd_schema_gaps.md analysis.
Fix Windows CI break due to XSD codegen DONE 2026-05-19 2026-01-26 MSVC C1128 on domain_xsd.hpp; add /bigobj to the ores.ore target for MSVC builds.

Decisions

xsdcpp over codesynthesis
vcpkg availability tips the balance; codesynthesis would have introduced a runtime library we don't want.
Round-trip tests as the regression net
cheap to author, catches both schema and generator regressions.
Document remaining gaps explicitly
ore_xsd_schema_gaps.md becomes the work list rather than leaving the gaps invisible.

Out of scope

  • FPML XSD codegen — separate story.
  • Streaming XML parser support.

See also

None.

Emacs 29.1 (Org mode 9.6.6)