schemagen: support objects with more than 32 properties

Replace the 32-bit `uint32_t seen` bitmask with a `std::vector<uint64_t>`
bitset sized to the actual field count.  `requiredMask` is now a vector of
the same word count, and required-field checks use per-word masking so that
optional fields do not cause false rejections.

Adds big.schema.json + test_big.cpp regression tests covering the issue
reproducer (40 required properties, missing/duplicate at index 32), plus
run_tests.sh to exercise both test_gen.cpp and test_big.cpp.

Fixes #3
This commit is contained in:
2026-06-18 16:31:26 -04:00
parent 7c1c18fe6f
commit ca474e3f99
6 changed files with 400 additions and 19 deletions
+4
View File
@@ -1,2 +1,6 @@
build
.cache
contrib/schemagen/gen.h
contrib/schemagen/big.h
contrib/schemagen/test_gen
contrib/schemagen/test_big