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.orecomponent 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.mdbecomes the work list rather than leaving the gaps invisible.
Out of scope
- FPML XSD codegen — separate story.
- Streaming XML parser support.
See also
None.