leptris 1.9.201.0-arm-linux → 1.9.201.2-arm-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -0
- data/Rakefile +52 -12
- data/ext/leptris/native/extconf.rb +85 -0
- data/ext/leptris/native/native.c +1 -1
- data/lib/leptris/version.rb +1 -1
- data/lib/leptris/xml/ffi.rb +13 -0
- data/lib/leptris/xml/native.so +0 -0
- data/vendor-src/libleptris/CHANGELOG.md +8080 -0
- data/vendor-src/libleptris/CLAUDE.md +150 -0
- data/vendor-src/libleptris/CMakeLists.txt +379 -0
- data/vendor-src/libleptris/CMakePresets.json +61 -0
- data/vendor-src/libleptris/CODE_OF_CONDUCT.md +132 -0
- data/vendor-src/libleptris/CONTEXT.md +49 -0
- data/vendor-src/libleptris/LICENSE.md +33 -0
- data/vendor-src/libleptris/README.adoc +1197 -0
- data/vendor-src/libleptris/TODO.assemble/README.md +16 -0
- data/vendor-src/libleptris/TODO.bindings/01-mutation-construction.md +18 -0
- data/vendor-src/libleptris/TODO.bindings/02-incremental-iterparse.md +15 -0
- data/vendor-src/libleptris/TODO.bindings/03-compiled-xpath.md +15 -0
- data/vendor-src/libleptris/TODO.bindings/04-pull-stax-api.md +14 -0
- data/vendor-src/libleptris/TODO.bindings/05-per-parse-options.md +17 -0
- data/vendor-src/libleptris/TODO.bindings/06-serialize-encoding-guarantees.md +14 -0
- data/vendor-src/libleptris/TODO.bindings/README.md +36 -0
- data/vendor-src/libleptris/TODO.concurrency/01-thread-safe-errors.md +19 -0
- data/vendor-src/libleptris/TODO.concurrency/02-export-surface-gate.md +24 -0
- data/vendor-src/libleptris/TODO.concurrency/03-mixed-nodeset-batch.md +14 -0
- data/vendor-src/libleptris/TODO.concurrency/04-canonical-status-message.md +13 -0
- data/vendor-src/libleptris/TODO.concurrency/05-windows-dll-name.md +10 -0
- data/vendor-src/libleptris/TODO.concurrency/06-exslt-pack.md +26 -0
- data/vendor-src/libleptris/TODO.concurrency/07-ns-set-pairs.md +11 -0
- data/vendor-src/libleptris/TODO.concurrency/08-threading-contract.md +45 -0
- data/vendor-src/libleptris/TODO.engine/01-file-sources.md +11 -0
- data/vendor-src/libleptris/TODO.engine/02-compiled-contexts.md +10 -0
- data/vendor-src/libleptris/TODO.engine/03-rust-publish.md +9 -0
- data/vendor-src/libleptris/TODO.engine/04-ruby-release-input.md +8 -0
- data/vendor-src/libleptris/TODO.engine/05-todo-md-refresh.md +7 -0
- data/vendor-src/libleptris/TODO.engine/README.md +16 -0
- data/vendor-src/libleptris/TODO.hygiene/README.md +15 -0
- data/vendor-src/libleptris/TODO.max-perf/00-INDEX.md +22 -0
- data/vendor-src/libleptris/TODO.max-perf/1-simd-html-scanner.md +15 -0
- data/vendor-src/libleptris/TODO.max-perf/10-moxml-plan-followups.md +9 -0
- data/vendor-src/libleptris/TODO.max-perf/2-compiled-dispatch-tokenizer.md +8 -0
- data/vendor-src/libleptris/TODO.max-perf/3-iterparse-fixed-cost.md +5 -0
- data/vendor-src/libleptris/TODO.max-perf/4-compact-node-micro-opts.md +17 -0
- data/vendor-src/libleptris/TODO.max-perf/5-xslt-bench-profiling-rounds.md +13 -0
- data/vendor-src/libleptris/TODO.max-perf/6-language-tails.md +9 -0
- data/vendor-src/libleptris/TODO.max-perf/7-validate-bindings.md +6 -0
- data/vendor-src/libleptris/TODO.max-perf/8-native-xml-diff-consumer.md +5 -0
- data/vendor-src/libleptris/TODO.max-perf/9-prebuilt-gem-matrix.md +14 -0
- data/vendor-src/libleptris/TODO.md +33 -0
- data/vendor-src/libleptris/TODO.transform/README.md +39 -0
- data/vendor-src/libleptris/TODO.validate/README.md +32 -0
- data/vendor-src/libleptris/TODO.xpath2/README.md +91 -0
- data/vendor-src/libleptris/TODO.xslt-full/01-xpath-fn-sequences.md +27 -0
- data/vendor-src/libleptris/TODO.xslt-full/02-xpath-fn-regex.md +13 -0
- data/vendor-src/libleptris/TODO.xslt-full/03-xpath-fn-math.md +10 -0
- data/vendor-src/libleptris/TODO.xslt-full/04-xpath-fn-strings-qname-uri.md +97 -0
- data/vendor-src/libleptris/TODO.xslt-full/05-xpath-fn-dates.md +30 -0
- data/vendor-src/libleptris/TODO.xslt-full/06-xpath-grammar-3x.md +83 -0
- data/vendor-src/libleptris/TODO.xslt-full/07-xpath-function-items.md +124 -0
- data/vendor-src/libleptris/TODO.xslt-full/08-xpath-maps-arrays.md +79 -0
- data/vendor-src/libleptris/TODO.xslt-full/09-xslt-noop-fillins.md +35 -0
- data/vendor-src/libleptris/TODO.xslt-full/10-xslt-tunnel-params.md +9 -0
- data/vendor-src/libleptris/TODO.xslt-full/11-xquery-core.md +119 -0
- data/vendor-src/libleptris/TODO.xslt-full/12-xquery-31.md +65 -0
- data/vendor-src/libleptris/TODO.xslt-full/13-perf-inprocess.md +425 -0
- data/vendor-src/libleptris/TODO.xslt-full/14-html-mode.md +803 -0
- data/vendor-src/libleptris/TODO.xslt-full/15-binding-entries.md +19 -0
- data/vendor-src/libleptris/TODO.xslt-full/16-schematron.md +156 -0
- data/vendor-src/libleptris/TODO.xslt-full/17-xml-diff.md +52 -0
- data/vendor-src/libleptris/TODO.xslt-full/18-compact-nodes.md +278 -0
- data/vendor-src/libleptris/TODO.xslt-full/README.md +26 -0
- data/vendor-src/libleptris/TODO.xslt-full/REMAINING.md +163 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/00-triage.md +171 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/01-fragment-nodes.md +19 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/02-root-node-semantics.md +34 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/03-crashes.md +15 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/04-namespaces.md +14 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/05-number-attrset-sort.md +13 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/06-document-chains.md +10 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/07-charef-serializer.md +9 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/08-perf-gate.md +8 -0
- data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/09-release.md +14 -0
- data/vendor-src/libleptris/VALIDATION.md +151 -0
- data/vendor-src/libleptris/benchmarks/CMakeLists.txt +259 -0
- data/vendor-src/libleptris/benchmarks/README.adoc +228 -0
- data/vendor-src/libleptris/benchmarks/README.md +212 -0
- data/vendor-src/libleptris/benchmarks/common/benchmark.c +252 -0
- data/vendor-src/libleptris/benchmarks/common/benchmark.h +77 -0
- data/vendor-src/libleptris/benchmarks/common/test_data.c +415 -0
- data/vendor-src/libleptris/benchmarks/common/test_data.h +18 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/CMakeLists.txt +184 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_decomp.cpp +110 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_first_access.cpp +261 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_many_attrs.cpp +150 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_memory.cpp +185 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_parse.cpp +270 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_parse_ops.cpp +392 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_sax.c +106 -0
- data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_write.cpp +351 -0
- data/vendor-src/libleptris/benchmarks/data/attrs.xml +303 -0
- data/vendor-src/libleptris/benchmarks/data/cdata_test.xml +13 -0
- data/vendor-src/libleptris/benchmarks/data/comment_test.xml +15 -0
- data/vendor-src/libleptris/benchmarks/data/deep.xml +205 -0
- data/vendor-src/libleptris/benchmarks/data/generate_attrs.rb +22 -0
- data/vendor-src/libleptris/benchmarks/data/generate_deep.rb +25 -0
- data/vendor-src/libleptris/benchmarks/data/generate_large.rb +33 -0
- data/vendor-src/libleptris/benchmarks/data/generate_wide.rb +18 -0
- data/vendor-src/libleptris/benchmarks/data/large.xml +21003 -0
- data/vendor-src/libleptris/benchmarks/data/large_workflow.xml +4003 -0
- data/vendor-src/libleptris/benchmarks/data/medium.xml +67 -0
- data/vendor-src/libleptris/benchmarks/data/medium_workflow.xml +353 -0
- data/vendor-src/libleptris/benchmarks/data/pi_test.xml +9 -0
- data/vendor-src/libleptris/benchmarks/data/small.xml +10 -0
- data/vendor-src/libleptris/benchmarks/data/small_workflow.xml +36 -0
- data/vendor-src/libleptris/benchmarks/data/wide.xml +5003 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_document_lifecycle.c +69 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_leptris.c +184 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_libxml2.c +176 -0
- data/vendor-src/libleptris/benchmarks/dom/bench_text_borrowed.c +74 -0
- data/vendor-src/libleptris/benchmarks/dom/dom_benchmark_v2.cpp +314 -0
- data/vendor-src/libleptris/benchmarks/fixtures/large.xml +4003 -0
- data/vendor-src/libleptris/benchmarks/fixtures/large_catalog.xml +50003 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2/eve.xml +6 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2/slashdot.rdf +66 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2/wap.xml +27 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/4rects.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/a-valid.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/a-wf.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/bike.xml +41 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/circle.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/defs.xml +14 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/desc.xml +14 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/ellipse.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/flower2.xml +44 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/gradient.xml +16 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group01.xml +15 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group02.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group03.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/image-valid.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/image-wf.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/lin-gradient.xml +16 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/marker.xml +28 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/mask.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/mathswitch.xml +32 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/parentns.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/path01.xml +5 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/path02.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/patternfill.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/polyline.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/private.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/rad-gradient.xml +17 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/rectangle.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/richdesc.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/script.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/structure01.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/style.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/switch.xml +21 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/symbol-use.xml +28 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/template.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text01.xml +12 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text02.xml +17 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text03.xml +8 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/toap01.xml +10 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/toap02.xml +33 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/transform.xml +26 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/trivial.xml +6 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/twin-gradients.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/v-template.xml +9 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport-nest.xml +13 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport-transform.xml +46 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport.xml +11 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/wf-template.xml +7 -0
- data/vendor-src/libleptris/benchmarks/fixtures/libxml2_xsdtest.xml +5286 -0
- data/vendor-src/libleptris/benchmarks/fixtures/medium.xml +403 -0
- data/vendor-src/libleptris/benchmarks/fixtures/medium_catalog.xml +3003 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/empty.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/large.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/latintest_latin1.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/latintest_utf8.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/multiline.xml +3 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/small.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/truncation.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_bom.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_clean.xml +84 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_nodecl.xml +86 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml//321/202/320/265/321/201/321/202.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/empty.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/large.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/latintest_latin1.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/latintest_utf8.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/multiline.xml +3 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/small.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/truncation.xml +19 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_bom.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_clean.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_nodecl.xml +0 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_bom.xml +87 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_clean.xml +84 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_nodecl.xml +86 -0
- data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests//321/202/320/265/321/201/321/202.xml +1 -0
- data/vendor-src/libleptris/benchmarks/fixtures/small.xml +38 -0
- data/vendor-src/libleptris/benchmarks/html/bench_html_parse.c +111 -0
- data/vendor-src/libleptris/benchmarks/html/gen_nokogiri_reference.rb +112 -0
- data/vendor-src/libleptris/benchmarks/html/nokogiri_html_parse.rb +64 -0
- data/vendor-src/libleptris/benchmarks/matrix/README.md +71 -0
- data/vendor-src/libleptris/benchmarks/matrix/bench2html.rb +316 -0
- data/vendor-src/libleptris/benchmarks/matrix/bench_matrix.cpp +724 -0
- data/vendor-src/libleptris/benchmarks/modification/bench_leptris_modify.c +211 -0
- data/vendor-src/libleptris/benchmarks/modification/bench_node_creation.c +130 -0
- data/vendor-src/libleptris/benchmarks/results/BENCHMARK_REPORT.md +226 -0
- data/vendor-src/libleptris/benchmarks/results/baseline_report.md +219 -0
- data/vendor-src/libleptris/benchmarks/results/benchmark_20251223_134550.json +13 -0
- data/vendor-src/libleptris/benchmarks/results/benchmark_20260129_225844.json +13 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_dom_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify_optimized.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify_session1.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_modify_session2.json +36 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_serialize.json +34 -0
- data/vendor-src/libleptris/benchmarks/results/leptris_xpath_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/libxml2_dom_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/libxml2_xpath_output.txt +24 -0
- data/vendor-src/libleptris/benchmarks/results/phase16_session2.json +21 -0
- data/vendor-src/libleptris/benchmarks/results/phase17.5_session1.json +30 -0
- data/vendor-src/libleptris/benchmarks/results/phase17_session1.json +30 -0
- data/vendor-src/libleptris/benchmarks/results/pugixml_dom_output.txt +51 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_axes_leptris.json +318 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_axes_libxml2.json +318 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_functions_leptris.json +222 -0
- data/vendor-src/libleptris/benchmarks/results/xpath_functions_libxml2.json +222 -0
- data/vendor-src/libleptris/benchmarks/sax/bench_iterparse.c +115 -0
- data/vendor-src/libleptris/benchmarks/sax/bench_leptris.c +124 -0
- data/vendor-src/libleptris/benchmarks/sax/bench_libxml2.c +115 -0
- data/vendor-src/libleptris/benchmarks/serialization/bench_leptris_serialize.c +198 -0
- data/vendor-src/libleptris/benchmarks/src/benchmark_base.h +175 -0
- data/vendor-src/libleptris/benchmarks/twins/mutation_leptris.c +37 -0
- data/vendor-src/libleptris/benchmarks/twins/mutation_pugixml.cpp +28 -0
- data/vendor-src/libleptris/benchmarks/twins/parse_leptris.c +35 -0
- data/vendor-src/libleptris/benchmarks/twins/parse_pugixml.cpp +35 -0
- data/vendor-src/libleptris/benchmarks/utils.c +171 -0
- data/vendor-src/libleptris/benchmarks/utils.h +70 -0
- data/vendor-src/libleptris/benchmarks/workflows/bench_dom_modify.c +325 -0
- data/vendor-src/libleptris/benchmarks/workflows/bench_end_to_end.c +529 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_axes.c +411 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_axes_libxml2.c +108 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_diagnostic.c +431 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_functions.c +271 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_functions_libxml2.c +123 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_leptris.c +78 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_libxml2.c +98 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_pugixml.cpp +117 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_scalar_eval.c +86 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_scalar_eval_libxml2.c +70 -0
- data/vendor-src/libleptris/benchmarks/xpath/bench_xslt_transform.c +48 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch.c +52 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch_heavy.c +82 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch_pred.c +34 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_subtree_copy.c +55 -0
- data/vendor-src/libleptris/benchmarks/xslt/bench_valueof.c +46 -0
- data/vendor-src/libleptris/benchmarks/xslt/heavy_lxml.py +48 -0
- data/vendor-src/libleptris/benchmarks/xslt/scorecard_lxml.py +169 -0
- data/vendor-src/libleptris/bindings/ruby/leptris.gemspec +22 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/document.rb +60 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/element.rb +86 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/error.rb +6 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/node.rb +73 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/sax.rb +189 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris/xpath.rb +44 -0
- data/vendor-src/libleptris/bindings/ruby/lib/leptris.rb +137 -0
- data/vendor-src/libleptris/bindings/ruby/spec/leptris_spec.rb +113 -0
- data/vendor-src/libleptris/bindings/ruby/spec/sax_spec.rb +141 -0
- data/vendor-src/libleptris/bindings/ruby/spec/spec_helper.rb +7 -0
- data/vendor-src/libleptris/bindings/ruby/test_full.rb +21 -0
- data/vendor-src/libleptris/bindings/rust/Cargo.lock +7 -0
- data/vendor-src/libleptris/bindings/rust/Cargo.toml +13 -0
- data/vendor-src/libleptris/bindings/rust/README.md +61 -0
- data/vendor-src/libleptris/bindings/rust/build.rs +74 -0
- data/vendor-src/libleptris/bindings/rust/src/ffi.rs +204 -0
- data/vendor-src/libleptris/bindings/rust/src/lib.rs +580 -0
- data/vendor-src/libleptris/bindings/rust/tests/integration.rs +156 -0
- data/vendor-src/libleptris/cli/ARCHITECTURE_REVIEW.md +514 -0
- data/vendor-src/libleptris/cli/CLI_ARCHITECTURE.md +851 -0
- data/vendor-src/libleptris/cli/CMakeLists.txt +46 -0
- data/vendor-src/libleptris/cli/cli.c +115 -0
- data/vendor-src/libleptris/cli/cli.h +232 -0
- data/vendor-src/libleptris/cli/commands/diff.c +208 -0
- data/vendor-src/libleptris/cli/commands/format.c +379 -0
- data/vendor-src/libleptris/cli/commands/parse.c +343 -0
- data/vendor-src/libleptris/cli/commands/validate.c +284 -0
- data/vendor-src/libleptris/cli/commands/version.c +49 -0
- data/vendor-src/libleptris/cli/commands/xpath.c +428 -0
- data/vendor-src/libleptris/cli/commands/xquery.c +188 -0
- data/vendor-src/libleptris/cli/completion/leptris.bash +86 -0
- data/vendor-src/libleptris/cli/completion/leptris.zsh +74 -0
- data/vendor-src/libleptris/cli/error.c +394 -0
- data/vendor-src/libleptris/cli/error.h +360 -0
- data/vendor-src/libleptris/cli/leptris +0 -0
- data/vendor-src/libleptris/cli/main.c +127 -0
- data/vendor-src/libleptris/cli/man/leptris-format.1.adoc +226 -0
- data/vendor-src/libleptris/cli/man/leptris-parse.1.adoc +213 -0
- data/vendor-src/libleptris/cli/man/leptris-xpath.1.adoc +479 -0
- data/vendor-src/libleptris/cli/man/leptris.1.adoc +192 -0
- data/vendor-src/libleptris/cli/options.c +451 -0
- data/vendor-src/libleptris/cli/options.h +378 -0
- data/vendor-src/libleptris/cli/output.c +841 -0
- data/vendor-src/libleptris/cli/output.h +361 -0
- data/vendor-src/libleptris/cmake/FindUtf8proc.cmake +56 -0
- data/vendor-src/libleptris/cmake/leptris-config.cmake.in +14 -0
- data/vendor-src/libleptris/cmake/leptris.pc.in +11 -0
- data/vendor-src/libleptris/cmake/modules/AdocMan.cmake +132 -0
- data/vendor-src/libleptris/docs/ARCHITECTURE_REVIEW.md +280 -0
- data/vendor-src/libleptris/docs/Doxyfile +47 -0
- data/vendor-src/libleptris/docs/FFI.md +165 -0
- data/vendor-src/libleptris/docs/README.md +47 -0
- data/vendor-src/libleptris/docs/ROADMAP-SAXON-PARITY.md +194 -0
- data/vendor-src/libleptris/docs/guide/building.md +199 -0
- data/vendor-src/libleptris/docs/guide/getting-started.md +134 -0
- data/vendor-src/libleptris/docs/guide/parsing.md +315 -0
- data/vendor-src/libleptris/docs/guide/xpath-queries.md +444 -0
- data/vendor-src/libleptris/examples/c/CMakeLists.txt +58 -0
- data/vendor-src/libleptris/examples/c/README.md +345 -0
- data/vendor-src/libleptris/examples/c/basic_example.c +80 -0
- data/vendor-src/libleptris/examples/c/dom_traversal_example.c +58 -0
- data/vendor-src/libleptris/examples/c/error_handling_example.c +121 -0
- data/vendor-src/libleptris/examples/c/namespace_example.c +49 -0
- data/vendor-src/libleptris/examples/c/xpath_example.c +74 -0
- data/vendor-src/libleptris/ports/leptris/portfile.cmake +41 -0
- data/vendor-src/libleptris/ports/leptris/usage +28 -0
- data/vendor-src/libleptris/scripts/check_dll_exports.py +54 -0
- data/vendor-src/libleptris/scripts/check_export_surface.py +84 -0
- data/vendor-src/libleptris/scripts/check_ffi_mirrors.py +163 -0
- data/vendor-src/libleptris/scripts/check_formatting.sh +30 -0
- data/vendor-src/libleptris/scripts/check_shared_exports.sh +120 -0
- data/vendor-src/libleptris/scripts/check_trailing_whitespace.sh +18 -0
- data/vendor-src/libleptris/scripts/gen-api-docs.sh +31 -0
- data/vendor-src/libleptris/scripts/run_static_analysis.sh +16 -0
- data/vendor-src/libleptris/scripts/validate.sh +199 -0
- data/vendor-src/libleptris/scripts/xslt_triage.sh +72 -0
- data/vendor-src/libleptris/src/CMakeLists.txt +597 -0
- data/vendor-src/libleptris/src/include/leptris/descriptor.h +178 -0
- data/vendor-src/libleptris/src/include/leptris/dom/document.h +213 -0
- data/vendor-src/libleptris/src/include/leptris/dom/element.h +435 -0
- data/vendor-src/libleptris/src/include/leptris/dom/serialize.h +133 -0
- data/vendor-src/libleptris/src/include/leptris/dtd.h +178 -0
- data/vendor-src/libleptris/src/include/leptris/error.h +97 -0
- data/vendor-src/libleptris/src/include/leptris/sax/sax.h +584 -0
- data/vendor-src/libleptris/src/include/leptris/types.h +386 -0
- data/vendor-src/libleptris/src/include/leptris/xpath/xpath.h +250 -0
- data/vendor-src/libleptris/src/include/leptris/xquery/xquery.h +80 -0
- data/vendor-src/libleptris/src/include/leptris.h +3701 -0
- data/vendor-src/libleptris/src/leptris/chartype.h +124 -0
- data/vendor-src/libleptris/src/leptris/common/chartype.c +90 -0
- data/vendor-src/libleptris/src/leptris/common/chartype.h +44 -0
- data/vendor-src/libleptris/src/leptris/common/cpu.c +40 -0
- data/vendor-src/libleptris/src/leptris/common/cpu.h +63 -0
- data/vendor-src/libleptris/src/leptris/common/entities.c +329 -0
- data/vendor-src/libleptris/src/leptris/common/entities.h +79 -0
- data/vendor-src/libleptris/src/leptris/common/format_number.c +273 -0
- data/vendor-src/libleptris/src/leptris/common/format_number.h +29 -0
- data/vendor-src/libleptris/src/leptris/common/port.h +171 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text.c +237 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text.h +104 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text_avx2.c +105 -0
- data/vendor-src/libleptris/src/leptris/common/simd_text_neon.c +280 -0
- data/vendor-src/libleptris/src/leptris/common/string_view.c +204 -0
- data/vendor-src/libleptris/src/leptris/common/string_view.h +68 -0
- data/vendor-src/libleptris/src/leptris/common/types_internal.h +31 -0
- data/vendor-src/libleptris/src/leptris/core.c +201 -0
- data/vendor-src/libleptris/src/leptris/descriptor/plan.c +527 -0
- data/vendor-src/libleptris/src/leptris/diff/diff.c +491 -0
- data/vendor-src/libleptris/src/leptris/dom/cdata.c +47 -0
- data/vendor-src/libleptris/src/leptris/dom/cdata.h +73 -0
- data/vendor-src/libleptris/src/leptris/dom/comment.c +48 -0
- data/vendor-src/libleptris/src/leptris/dom/comment.h +74 -0
- data/vendor-src/libleptris/src/leptris/dom/compact.c +397 -0
- data/vendor-src/libleptris/src/leptris/dom/compact.h +307 -0
- data/vendor-src/libleptris/src/leptris/dom/diag.c +58 -0
- data/vendor-src/libleptris/src/leptris/dom/diag.h +75 -0
- data/vendor-src/libleptris/src/leptris/dom/digest.c +255 -0
- data/vendor-src/libleptris/src/leptris/dom/doctype.c +137 -0
- data/vendor-src/libleptris/src/leptris/dom/doctype.h +52 -0
- data/vendor-src/libleptris/src/leptris/dom/document_node.c +13 -0
- data/vendor-src/libleptris/src/leptris/dom/document_node.h +21 -0
- data/vendor-src/libleptris/src/leptris/dom/edges.h +60 -0
- data/vendor-src/libleptris/src/leptris/dom/element.c +1114 -0
- data/vendor-src/libleptris/src/leptris/dom/element.h +1109 -0
- data/vendor-src/libleptris/src/leptris/dom/element_index.c +444 -0
- data/vendor-src/libleptris/src/leptris/dom/element_index.h +135 -0
- data/vendor-src/libleptris/src/leptris/dom/element_modify.c +2185 -0
- data/vendor-src/libleptris/src/leptris/dom/element_query.c +1468 -0
- data/vendor-src/libleptris/src/leptris/dom/entity_ref.c +57 -0
- data/vendor-src/libleptris/src/leptris/dom/entity_ref.h +70 -0
- data/vendor-src/libleptris/src/leptris/dom/node.c +420 -0
- data/vendor-src/libleptris/src/leptris/dom/node.h +170 -0
- data/vendor-src/libleptris/src/leptris/dom/node_public.c +937 -0
- data/vendor-src/libleptris/src/leptris/dom/node_vtable.c +138 -0
- data/vendor-src/libleptris/src/leptris/dom/pi.c +70 -0
- data/vendor-src/libleptris/src/leptris/dom/pi.h +80 -0
- data/vendor-src/libleptris/src/leptris/dom/root_doc_map.c +310 -0
- data/vendor-src/libleptris/src/leptris/dom/root_doc_map.h +30 -0
- data/vendor-src/libleptris/src/leptris/dom/text.c +157 -0
- data/vendor-src/libleptris/src/leptris/dom/text.h +119 -0
- data/vendor-src/libleptris/src/leptris/dtd/content_check.c +300 -0
- data/vendor-src/libleptris/src/leptris/dtd/model.c +533 -0
- data/vendor-src/libleptris/src/leptris/dtd/model.h +354 -0
- data/vendor-src/libleptris/src/leptris/dtd/parser.c +827 -0
- data/vendor-src/libleptris/src/leptris/dtd/resolver.c +354 -0
- data/vendor-src/libleptris/src/leptris/dtd/validator.c +668 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoders.c +346 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoders.h +61 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoding.c +451 -0
- data/vendor-src/libleptris/src/leptris/encoding/encoding.h +118 -0
- data/vendor-src/libleptris/src/leptris/encoding/unicode.c +317 -0
- data/vendor-src/libleptris/src/leptris/encoding/unicode.h +64 -0
- data/vendor-src/libleptris/src/leptris/encoding/utf16.c +204 -0
- data/vendor-src/libleptris/src/leptris/encoding/utf16.h +78 -0
- data/vendor-src/libleptris/src/leptris/encoding/wrapper.c +243 -0
- data/vendor-src/libleptris/src/leptris/error.c +134 -0
- data/vendor-src/libleptris/src/leptris/flat/direct_parse.c +1935 -0
- data/vendor-src/libleptris/src/leptris/flat/direct_parse.h +41 -0
- data/vendor-src/libleptris/src/leptris/html/html_parse.c +8040 -0
- data/vendor-src/libleptris/src/leptris/leptris.c +1264 -0
- data/vendor-src/libleptris/src/leptris/leptris_internal.h +910 -0
- data/vendor-src/libleptris/src/leptris/leptris_memory.c +179 -0
- data/vendor-src/libleptris/src/leptris/leptris_memory.h +180 -0
- data/vendor-src/libleptris/src/leptris/leptris_parse.h +195 -0
- data/vendor-src/libleptris/src/leptris/memory/arena.c +243 -0
- data/vendor-src/libleptris/src/leptris/memory/arena.h +93 -0
- data/vendor-src/libleptris/src/leptris/memory/pool.c +1055 -0
- data/vendor-src/libleptris/src/leptris/memory/pool.h +426 -0
- data/vendor-src/libleptris/src/leptris/rng/parse.c +814 -0
- data/vendor-src/libleptris/src/leptris/rng/rng_internal.h +112 -0
- data/vendor-src/libleptris/src/leptris/rng/rng_public.c +159 -0
- data/vendor-src/libleptris/src/leptris/rng/rng_regex.c +453 -0
- data/vendor-src/libleptris/src/leptris/rng/validate.c +1923 -0
- data/vendor-src/libleptris/src/leptris/sax/iterparse.c +435 -0
- data/vendor-src/libleptris/src/leptris/sax/parser.c +105 -0
- data/vendor-src/libleptris/src/leptris/sax/pull.c +489 -0
- data/vendor-src/libleptris/src/leptris/sax/recorder.c +252 -0
- data/vendor-src/libleptris/src/leptris/sax/sax_internal.h +163 -0
- data/vendor-src/libleptris/src/leptris/sax/streaming.c +1469 -0
- data/vendor-src/libleptris/src/leptris/sch/schematron.c +1588 -0
- data/vendor-src/libleptris/src/leptris/serialize/c14n.c +1143 -0
- data/vendor-src/libleptris/src/leptris/serialize/serialize.c +2333 -0
- data/vendor-src/libleptris/src/leptris/serialize/serialize.h +188 -0
- data/vendor-src/libleptris/src/leptris/simd_helpers.h +447 -0
- data/vendor-src/libleptris/src/leptris/unicode/unicode.c +237 -0
- data/vendor-src/libleptris/src/leptris/unicode/unicode.h +113 -0
- data/vendor-src/libleptris/src/leptris/xinclude/xinclude.c +794 -0
- data/vendor-src/libleptris/src/leptris/xpath/bytecode.h +229 -0
- data/vendor-src/libleptris/src/leptris/xpath/compiler.c +1478 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator.c +1099 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator.h +189 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_axes.c +787 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_internal.h +112 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_operators.c +2138 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_path.c +1312 -0
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_types.c +294 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions.c +2544 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions.h +161 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions_exslt.c +545 -0
- data/vendor-src/libleptris/src/leptris/xpath/functions_ext31.c +4316 -0
- data/vendor-src/libleptris/src/leptris/xpath/lexer.c +636 -0
- data/vendor-src/libleptris/src/leptris/xpath/lexer.h +25 -0
- data/vendor-src/libleptris/src/leptris/xpath/parser.c +2992 -0
- data/vendor-src/libleptris/src/leptris/xpath/parser.h +28 -0
- data/vendor-src/libleptris/src/leptris/xpath/vm.c +2903 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_ast_cache.c +319 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_compiled.c +263 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_internal.h +134 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_public.c +1139 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_variables.c +410 -0
- data/vendor-src/libleptris/src/leptris/xpath/xpath_variables.h +230 -0
- data/vendor-src/libleptris/src/leptris/xquery/xquery.c +2641 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_exec.c +4887 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_functions.c +1612 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_internal.h +862 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_parse.c +2418 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_pattern.c +441 -0
- data/vendor-src/libleptris/src/leptris/xslt/xslt_public.c +710 -0
- data/vendor-src/libleptris/src/leptris.symvers +16 -0
- data/vendor-src/libleptris/src/man/libleptris.5.adoc +961 -0
- data/vendor-src/libleptris/test/CMakeLists.txt +234 -0
- data/vendor-src/libleptris/test/README.md +59 -0
- data/vendor-src/libleptris/test/abi/test_descriptor.cpp +441 -0
- data/vendor-src/libleptris/test/abi/test_doctype_api.cpp +51 -0
- data/vendor-src/libleptris/test/abi/test_dom_deep_copy.cpp +110 -0
- data/vendor-src/libleptris/test/abi/test_dom_mutation_bugs.cpp +210 -0
- data/vendor-src/libleptris/test/abi/test_header_hygiene.cpp +269 -0
- data/vendor-src/libleptris/test/abi/test_namespace_mutation_and_create.cpp +198 -0
- data/vendor-src/libleptris/test/abi/test_node_get_xpath.cpp +128 -0
- data/vendor-src/libleptris/test/abi/test_nokogiri_api.cpp +392 -0
- data/vendor-src/libleptris/test/abi/test_parse_fragment.cpp +114 -0
- data/vendor-src/libleptris/test/abi/test_previous_sibling_and_c14n_ex.cpp +299 -0
- data/vendor-src/libleptris/test/abi/test_public_surface.cpp +463 -0
- data/vendor-src/libleptris/test/abi/test_serialize_abi.cpp +67 -0
- data/vendor-src/libleptris/test/abi/test_v0_5_14_bugs.cpp +299 -0
- data/vendor-src/libleptris/test/abi/test_xpath_custom_fns.cpp +106 -0
- data/vendor-src/libleptris/test/cli/test_cli.cpp +493 -0
- data/vendor-src/libleptris/test/common/test_simd_spans.cpp +88 -0
- data/vendor-src/libleptris/test/common/test_simd_text.cpp +142 -0
- data/vendor-src/libleptris/test/concurrency/test_concurrency.cpp +218 -0
- data/vendor-src/libleptris/test/diff/test_diff.cpp +244 -0
- data/vendor-src/libleptris/test/dom/test_compact.cpp +339 -0
- data/vendor-src/libleptris/test/dom/test_digest.cpp +111 -0
- data/vendor-src/libleptris/test/dom/test_document_children.cpp +270 -0
- data/vendor-src/libleptris/test/dom/test_dom.cpp +2310 -0
- data/vendor-src/libleptris/test/dom/test_map_lifecycle.cpp +111 -0
- data/vendor-src/libleptris/test/dom/test_node_surface_parity.cpp +268 -0
- data/vendor-src/libleptris/test/dom/test_text_borrowed.cpp +126 -0
- data/vendor-src/libleptris/test/dom/test_vtable.cpp +108 -0
- data/vendor-src/libleptris/test/dtd/test_dtd_validate.cpp +1227 -0
- data/vendor-src/libleptris/test/dtd/test_w3c_conformance.cpp +212 -0
- data/vendor-src/libleptris/test/fixtures/basic.xml +13 -0
- data/vendor-src/libleptris/test/fixtures/cdata.xml +5 -0
- data/vendor-src/libleptris/test/fixtures/malformed.xml +2 -0
- data/vendor-src/libleptris/test/fixtures/namespaces.xml +11 -0
- data/vendor-src/libleptris/test/fixtures/utf16_decl.xml +5 -0
- data/vendor-src/libleptris/test/fuzz/fuzz_parse.c +40 -0
- data/vendor-src/libleptris/test/html/html5lib-redlist.txt +1366 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/LICENSE +21 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/README.md +11 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/adoption01.dat +354 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/adoption02.dat +39 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/blocks.dat +695 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/comments01.dat +217 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/doctype01.dat +474 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/domjs-unsafe.dat +0 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/entities01.dat +943 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/entities02.dat +309 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/foreign-fragment.dat +645 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/html5test-com.dat +301 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/inbody01.dat +54 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/isindex.dat +49 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/main-element.dat +46 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/math.dat +104 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/menuitem-element.dat +240 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/namespace-sensitivity.dat +22 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/noscript01.dat +237 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/pending-spec-changes-plain-text-unsafe.dat +0 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/pending-spec-changes.dat +46 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/plain-text-unsafe.dat +0 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/ruby.dat +302 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/scriptdata01.dat +372 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/search-element.dat +46 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/svg.dat +104 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tables01.dat +308 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/template.dat +1673 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests1.dat +1956 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests10.dat +849 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests11.dat +523 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests12.dat +62 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests14.dat +75 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests15.dat +216 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests16.dat +2602 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests17.dat +179 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests18.dat +558 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests19.dat +1398 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests2.dat +821 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests20.dat +842 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests21.dat +306 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests22.dat +190 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests23.dat +168 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests24.dat +79 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests25.dat +288 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests26.dat +453 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests3.dat +305 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests4.dat +58 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests5.dat +210 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests6.dat +663 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests7.dat +417 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests8.dat +165 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests9.dat +472 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests_innerHTML_1.dat +843 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tricky01.dat +336 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/webkit01.dat +785 -0
- data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/webkit02.dat +554 -0
- data/vendor-src/libleptris/test/html/html5lib_cases.h.in +6 -0
- data/vendor-src/libleptris/test/html/nokogiri-parity-redlist.txt +1183 -0
- data/vendor-src/libleptris/test/html/nokogiri-tree-tests.dat +18107 -0
- data/vendor-src/libleptris/test/html/test_html.cpp +2191 -0
- data/vendor-src/libleptris/test/html/test_html5lib.cpp +831 -0
- data/vendor-src/libleptris/test/memory/test_arena.cpp +252 -0
- data/vendor-src/libleptris/test/memory/test_oom_injection.cpp +170 -0
- data/vendor-src/libleptris/test/memory/test_pool.cpp +331 -0
- data/vendor-src/libleptris/test/memory/test_pool_arena.cpp +180 -0
- data/vendor-src/libleptris/test/parser/test_encoding.cpp +282 -0
- data/vendor-src/libleptris/test/parser/test_large_documents.cpp +346 -0
- data/vendor-src/libleptris/test/parser/test_parser.cpp +565 -0
- data/vendor-src/libleptris/test/parser/test_simd_count.cpp +70 -0
- data/vendor-src/libleptris/test/perf/test_perf.cpp +362 -0
- data/vendor-src/libleptris/test/perf/test_stress_high_doc_count.cpp +67 -0
- data/vendor-src/libleptris/test/rng/include-cases/bad-construct.rng +7 -0
- data/vendor-src/libleptris/test/rng/include-cases/bad-override.rng +6 -0
- data/vendor-src/libleptris/test/rng/include-cases/bad-start-override.rng +5 -0
- data/vendor-src/libleptris/test/rng/include-cases/ext-lib.rng +3 -0
- data/vendor-src/libleptris/test/rng/include-cases/ext-main.rng +7 -0
- data/vendor-src/libleptris/test/rng/include-cases/lib.rng +5 -0
- data/vendor-src/libleptris/test/rng/include-cases/lib2.rng +6 -0
- data/vendor-src/libleptris/test/rng/include-cases/main.rng +4 -0
- data/vendor-src/libleptris/test/rng/include-cases/no-href.rng +4 -0
- data/vendor-src/libleptris/test/rng/include-cases/override.rng +8 -0
- data/vendor-src/libleptris/test/rng/include-cases/self-include.rng +4 -0
- data/vendor-src/libleptris/test/rng/include-cases/start-override.rng +5 -0
- data/vendor-src/libleptris/test/rng/jing-cases/000.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/000.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/000.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/001.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/001.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/001.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/002.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/002.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/002.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/003.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/003.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/003.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/004.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/004.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/004.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/005.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/005.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/005.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/006.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/006.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/006.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/007.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/007.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/007.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/008.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/008.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/008.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/009.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/009.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/009.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/010.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/010.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/010.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/011.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/011.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/011.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/012.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/012.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/012.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/013.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/013.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/013.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/014.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/014.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/014.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/015.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/015.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/015.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/016.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/016.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/016.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/017.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/017.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/017.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/018.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/018.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/018.rng +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/019.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/019.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/019.rng +7 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020-book.rng +4 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020.bad.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020.ok.xml +1 -0
- data/vendor-src/libleptris/test/rng/jing-cases/020.rng +3 -0
- data/vendor-src/libleptris/test/rng/jing-cases/README.md +32 -0
- data/vendor-src/libleptris/test/rng/jing-cases/jing-ref.json +212 -0
- data/vendor-src/libleptris/test/rng/jing-cases/meta.json +1 -0
- data/vendor-src/libleptris/test/rng/test_rng.cpp +1365 -0
- data/vendor-src/libleptris/test/rng/test_rng_corpus.cpp +133 -0
- data/vendor-src/libleptris/test/rng/test_rng_corpus_msg.cpp +233 -0
- data/vendor-src/libleptris/test/sax/test_iterparse.cpp +203 -0
- data/vendor-src/libleptris/test/sax/test_pull.cpp +214 -0
- data/vendor-src/libleptris/test/sax/test_pull_batch.cpp +201 -0
- data/vendor-src/libleptris/test/sax/test_recorder.cpp +265 -0
- data/vendor-src/libleptris/test/sax/test_sax.cpp +665 -0
- data/vendor-src/libleptris/test/sax/test_streaming.cpp +434 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/README.md +15 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/extends-baseuri-fixup-01.xml +28 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/extends-recursive-01.xml +27 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/include-baseuri-fixup-01.xml +24 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/include-recursive-01.xml +24 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-02.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-03.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-04.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-05.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-06.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-pattern-global-01.xml +24 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-02.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-03.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-04.xml +19 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-05.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-06.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-07.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-rule-global-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-rule-global-02.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-pattern-01.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-phase-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-rule-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/let-value-element-content-01.xml +33 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/pattern-abstract-01.xml +22 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/pattern-subordinate-document-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/pattern-subordinate-document-02.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-abstract-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-abstract-02.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-attribute-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-comment-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-element-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-pi-01.xml +20 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-root-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-text-01.xml +18 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-01.xml +22 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-02.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-03.xml +22 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/rule-order-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/schema-default-phase-01.xml +26 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/schema-default-phase-02.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-diagnostic-01.xml +28 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-diagnostic-02.xml +25 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-name-nopath-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-name-path-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-property-01.xml +28 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-property-copy-of.xml +26 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/svrl-value-of-01.xml +23 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/xslt-key-01.xml +19 -0
- data/vendor-src/libleptris/test/sch/conformance-cases/xslt-key-element-content-01.xml +21 -0
- data/vendor-src/libleptris/test/sch/test_schematron.cpp +337 -0
- data/vendor-src/libleptris/test/sch/test_schematron_corpus.cpp +421 -0
- data/vendor-src/libleptris/test/serializer/test_c14n.cpp +539 -0
- data/vendor-src/libleptris/test/serializer/test_serialize.cpp +890 -0
- data/vendor-src/libleptris/test/smoke/test_smoke.cpp +41 -0
- data/vendor-src/libleptris/test/xinclude/test_xinclude.cpp +903 -0
- data/vendor-src/libleptris/test/xpath/test_bytecode_vm.cpp +755 -0
- data/vendor-src/libleptris/test/xpath/test_compiled.cpp +171 -0
- data/vendor-src/libleptris/test/xpath/test_exslt.cpp +141 -0
- data/vendor-src/libleptris/test/xpath/test_xpath.cpp +2433 -0
- data/vendor-src/libleptris/test/xpath/test_xpath_conformance.cpp +570 -0
- data/vendor-src/libleptris/test/xpath/test_xslt.cpp +4245 -0
- data/vendor-src/libleptris/test/xquery/books.xml +1 -0
- data/vendor-src/libleptris/test/xquery/qt3/README.md +28 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/concat.xml +878 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/contains.xml +795 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/ends-with.xml +556 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/starts-with.xml +644 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/substring/concepts.xml +1 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/substring.xml +449 -0
- data/vendor-src/libleptris/test/xquery/test_qt3.cpp +324 -0
- data/vendor-src/libleptris/test/xquery/test_xquery.cpp +768 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/ATTRIBUTION.md +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102-inc.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.out +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.ent +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.xsl +45 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.xsl +59 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.out +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.xml +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.xsl +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.xml +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.out +351 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.xml +118 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.xsl +99 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.xml +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp1.imp +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp2.imp +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp3.imp +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp4.imp +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.doc +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131-imp.imp +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.imp +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.out +23 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.xml +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.xsl +28 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.xsl +23 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.out +46 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.out +35 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.xml +65 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.xsl +85 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.err +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-1.imp +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-2.imp +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-3.imp +57 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-4.imp +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-5.imp +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-6.imp +31 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.out +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.xml +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.xsl +29 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-151.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-151.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.out +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.xsl +30 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.doc +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-154.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-154.xsl +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.imp1.imp +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.imp2.imp +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.err +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.doc +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.out +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.out +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.out +15256 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.xml +15255 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.xsl +131 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.imp +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.err +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.xsl +33 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.xsl +24 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.err +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.out +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.xsl +42 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188-imp.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190-imp.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191-imp.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.xsl +33 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.err +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.out +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.xsl +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.xsl +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.err +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.xsl +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.xsl +61 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.err +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.xsl +25 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.err +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.xsl +24 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.out +68 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.xml +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.out +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.xml +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223-imp.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223-inc.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.xsl +28 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.out +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.xml +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.xsl +20 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.out +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.xml +2419 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.ent +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.out +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.out +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.xml +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.xsl +29 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-inc.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-inc.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.xsl +34 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.xml +38 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.xsl +27 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.xsl +24 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.out +954 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.xml +475 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.xsl +158 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.out +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.xsl +28 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.xsl +21 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-58.xsl +274 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.err +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.xsl +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.out +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62-inc.xsl +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.out +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.xml +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.ent +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.out +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.xsl +26 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.xml +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.xsl +11 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.xsl +31 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.xsl +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.xml +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.xsl +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.xsl +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.xsl +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.xsl +29 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.xml +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.xsl +18 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.out +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.out +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.xml +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.xsl +14 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.xml +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.xml +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.xsl +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.out +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.xml +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.xsl +105 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.xml +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.out +13 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.xml +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.xsl +35 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.xml +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.xsl +8 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.out +15 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.xml +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.xsl +19 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93-inc.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.out +3 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.xsl +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.xml +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.xsl +35 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.out +4 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.xsl +22 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.out +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.xml +5 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.xsl +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.xml +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.xsl +32 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.out +6 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.xml +10 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.xsl +31 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.out +2 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.xml +23 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.out +9 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.xml +1 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.xsl +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.dtd +7 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.out +16 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.xml +17 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.xsl +62 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/inner.xsl +12 -0
- data/vendor-src/libleptris/test/xslt/libxslt_suite_general/items.xml +34 -0
- data/vendor-src/libleptris/test/xslt/open_cases.txt +0 -0
- data/vendor-src/libleptris/test/xslt/test_libxslt_suite.cpp +398 -0
- data/vendor-src/libleptris/vcpkg.json +29 -0
- data/vendor-src/utf8proc/CMakeLists.txt +133 -0
- data/vendor-src/utf8proc/Doxyfile +2765 -0
- data/vendor-src/utf8proc/LICENSE.md +93 -0
- data/vendor-src/utf8proc/MANIFEST +9 -0
- data/vendor-src/utf8proc/Makefile +203 -0
- data/vendor-src/utf8proc/NEWS.md +479 -0
- data/vendor-src/utf8proc/README.md +143 -0
- data/vendor-src/utf8proc/appveyor.yml +46 -0
- data/vendor-src/utf8proc/bench/Makefile +40 -0
- data/vendor-src/utf8proc/bench/bench.c +56 -0
- data/vendor-src/utf8proc/bench/icu.c +61 -0
- data/vendor-src/utf8proc/bench/unistring.c +60 -0
- data/vendor-src/utf8proc/bench/util.c +39 -0
- data/vendor-src/utf8proc/bench/util.h +22 -0
- data/vendor-src/utf8proc/cmake/utf8proc-config.cmake.in +5 -0
- data/vendor-src/utf8proc/data/Makefile +62 -0
- data/vendor-src/utf8proc/data/Manifest.toml +16 -0
- data/vendor-src/utf8proc/data/Project.toml +2 -0
- data/vendor-src/utf8proc/data/data_generator.jl +498 -0
- data/vendor-src/utf8proc/libutf8proc.pc.cmakein +10 -0
- data/vendor-src/utf8proc/libutf8proc.pc.in +10 -0
- data/vendor-src/utf8proc/lump.md +27 -0
- data/vendor-src/utf8proc/test/app/CMakeLists.txt +6 -0
- data/vendor-src/utf8proc/test/app/app.c +9 -0
- data/vendor-src/utf8proc/test/case.c +76 -0
- data/vendor-src/utf8proc/test/charwidth.c +91 -0
- data/vendor-src/utf8proc/test/custom.c +28 -0
- data/vendor-src/utf8proc/test/fuzz_main.c +54 -0
- data/vendor-src/utf8proc/test/fuzzer.c +97 -0
- data/vendor-src/utf8proc/test/graphemetest.c +136 -0
- data/vendor-src/utf8proc/test/iscase.c +63 -0
- data/vendor-src/utf8proc/test/iterate.c +168 -0
- data/vendor-src/utf8proc/test/maxdecomposition.c +22 -0
- data/vendor-src/utf8proc/test/misc.c +51 -0
- data/vendor-src/utf8proc/test/normtest.c +64 -0
- data/vendor-src/utf8proc/test/ossfuzz.sh +13 -0
- data/vendor-src/utf8proc/test/printproperty.c +68 -0
- data/vendor-src/utf8proc/test/tests.c +60 -0
- data/vendor-src/utf8proc/test/tests.h +27 -0
- data/vendor-src/utf8proc/test/valid.c +41 -0
- data/vendor-src/utf8proc/utf8proc.c +834 -0
- data/vendor-src/utf8proc/utf8proc.h +794 -0
- data/vendor-src/utf8proc/utf8proc_data.c +17141 -0
- data/vendor-src/utf8proc/utils.cmake +20 -0
- metadata +1528 -2
|
@@ -0,0 +1,1109 @@
|
|
|
1
|
+
/* lib/src/dom/element.h - Element node type
|
|
2
|
+
* Copyright (c) 2024, Ribose Inc.
|
|
3
|
+
*
|
|
4
|
+
* Element nodes contain:
|
|
5
|
+
* - Name and namespace information
|
|
6
|
+
* - Attributes
|
|
7
|
+
* - Child nodes (elements, text, comments, CDATA, PIs)
|
|
8
|
+
*
|
|
9
|
+
* COMPACT ARCHITECTURE:
|
|
10
|
+
* Uses compressed pointer encoding for minimal memory footprint.
|
|
11
|
+
* - ~72 bytes per element (source offsets + compressed pointers)
|
|
12
|
+
* - 1-2 byte compressed pointers instead of 8-byte pointers
|
|
13
|
+
* - Better cache locality and faster tree traversal
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#ifndef LEPTRIS_DOM_ELEMENT_H
|
|
17
|
+
#define LEPTRIS_DOM_ELEMENT_H
|
|
18
|
+
|
|
19
|
+
/* These typedefs match the public leptris.h / leptris/types.h. Guarded
|
|
20
|
+
* so internal headers can be included in any order without triggering
|
|
21
|
+
* C99's typedef-redefinition warning. See TODO 12. */
|
|
22
|
+
#ifndef LEPTRIS_INTERNAL_TYPES_DEFINED
|
|
23
|
+
#define LEPTRIS_INTERNAL_TYPES_DEFINED
|
|
24
|
+
typedef struct leptris_node* LeptrisNodeRef;
|
|
25
|
+
typedef struct leptris_document* LeptrisDocument;
|
|
26
|
+
typedef struct leptris_element* LeptrisElement;
|
|
27
|
+
typedef struct leptris_attribute* LeptrisAttribute;
|
|
28
|
+
typedef struct leptris_doctype* LeptrisDoctype;
|
|
29
|
+
typedef const char* LeptrisNamespace;
|
|
30
|
+
typedef struct leptris_xpath_result* LeptrisXPathResult;
|
|
31
|
+
typedef struct leptris_relaxng* LeptrisRelaxNG;
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
#include "node.h"
|
|
35
|
+
#include "../common/string_view.h"
|
|
36
|
+
#include "compact.h" /* Compressed pointer types */
|
|
37
|
+
|
|
38
|
+
/* Forward decl: LeptrisMemoryPool is defined in memory/pool.h. */
|
|
39
|
+
struct leptris_memory_pool;
|
|
40
|
+
|
|
41
|
+
/* Attribute structure - inline storage for minimal memory footprint
|
|
42
|
+
*
|
|
43
|
+
* Instead of storing pointers to attribute structures, we store attributes
|
|
44
|
+
* as a linked list with inline StringView storage. This eliminates pointer
|
|
45
|
+
* indirection and improves cache locality.
|
|
46
|
+
*
|
|
47
|
+
* Size: 72 bytes (was 112 before TODO 173).
|
|
48
|
+
*
|
|
49
|
+
* TODO 173: prefix / namespace_uri (views + pointers) moved into a side
|
|
50
|
+
* cache struct (leptris_attr_ns_cache) allocated only when actually needed.
|
|
51
|
+
* The common case (no namespace activity) has ns_cache == NULL — saves
|
|
52
|
+
* 48 bytes per attribute. For 100,000 attrs that's 4.8 MB less memory
|
|
53
|
+
* pressure and better cache locality. */
|
|
54
|
+
struct leptris_attr_ns_cache {
|
|
55
|
+
LeptrisStringView prefix_view;
|
|
56
|
+
LeptrisStringView namespace_uri_view;
|
|
57
|
+
char* prefix; /* NULL until first access */
|
|
58
|
+
char* namespace_uri; /* NULL until first access */
|
|
59
|
+
/* Issue #542: owning element for standalone expanded-name
|
|
60
|
+
* accessors — stamped at parse / set time. The URI itself stays
|
|
61
|
+
* UNRESOLVED (resolved per read through the owner's in-scope
|
|
62
|
+
* declarations, so namespace mutation stays correct). */
|
|
63
|
+
struct leptris_element* owner_elem;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
struct leptris_attribute {
|
|
67
|
+
/* SINGLE string representation (TODO 184 round 4): the views.
|
|
68
|
+
* - Parse path: zero-copy into the document buffer (NUL-
|
|
69
|
+
* terminated in place by the parser; document-lifetime).
|
|
70
|
+
* - Mutation API / entity expansion: view.data is an OWNED
|
|
71
|
+
* pool/heap copy, NUL-terminated, length set. Owned copies
|
|
72
|
+
* REPLACE the view because callers' strings may be temporary
|
|
73
|
+
* and the raw entity text is never needed post-expansion.
|
|
74
|
+
* 40 bytes: 16 + 16 + 8-byte packed tail (round 19). */
|
|
75
|
+
|
|
76
|
+
LeptrisStringView name_view;
|
|
77
|
+
/* lane18 S1: values <= 7 bytes store INLINE in this 16-byte
|
|
78
|
+
* slot (zero allocation on overwrite); longer values keep the
|
|
79
|
+
* heap view. The union field name (value, not value_view) is
|
|
80
|
+
* deliberate: the compiler finds every reader. Layout: value
|
|
81
|
+
* bytes + NUL occupy [0..7]; heap.length (bytes 8-15) holds
|
|
82
|
+
* FLAG|len for the inline form — value content NEVER overlaps
|
|
83
|
+
* the length field. */
|
|
84
|
+
union {
|
|
85
|
+
LeptrisStringView heap;
|
|
86
|
+
char inline_value[16];
|
|
87
|
+
} value;
|
|
88
|
+
|
|
89
|
+
/* Side cache for namespace activity. 0 when the attr has no
|
|
90
|
+
* prefix and no namespace_uri (the common case). Points via
|
|
91
|
+
* self-relative offset at a pool-allocated struct; use
|
|
92
|
+
* attr_get_ns_cache()/attr_set_ns_cache(). TODO 173.
|
|
93
|
+
* Round 19: was a raw pointer — now an int32 offset so the
|
|
94
|
+
* struct fits 40 bytes (compact.c overflow-table fallback
|
|
95
|
+
* covers >2GB spans). */
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
int32_t ns_cache_off;
|
|
99
|
+
|
|
100
|
+
/* Next attribute in linked list. TODO 183 Phase 5 (TODO 181
|
|
101
|
+
* Phase D): cp16 compact pointer — the attr `next` edge only
|
|
102
|
+
* connects attrs of the SAME element, which are allocated as
|
|
103
|
+
* adjacent slots in the parser's attr_block (contiguous by
|
|
104
|
+
* construction since TODO 183 Phase 3; distance ≤ K × sizeof,
|
|
105
|
+
* ~3 KB at K=100 — always within cp16's ±256 KB). Mutation-
|
|
106
|
+
* created attrs (different region) go through the encoder's
|
|
107
|
+
* overflow-table path. 0 = NULL end-of-list. */
|
|
108
|
+
int16_t next_cp;
|
|
109
|
+
|
|
110
|
+
/* Bits 0-14: 15-bit FNV-1a of the name, LAZY (0 = not yet
|
|
111
|
+
* computed; the first read via attr_name_hash() computes and
|
|
112
|
+
* caches; a real hash is never stored as 0 — the compute maps
|
|
113
|
+
* 0 to 1). Bit 15: has_entities (1 if value_view contains '&',
|
|
114
|
+
* 0 otherwise; set during parsing, cleared after eager
|
|
115
|
+
* expansion). The parse path skips the hash entirely (saves
|
|
116
|
+
* ~5ns per attr on attr-heavy inputs); query paths pay it on
|
|
117
|
+
* first access, then cached. The hash is a pre-filter only —
|
|
118
|
+
* every hash hit is confirmed by memcmp — so 15 bits suffice.
|
|
119
|
+
* TODO 172.
|
|
120
|
+
*
|
|
121
|
+
* Layout note: ns_cache_off + name_hash + next_cp pack into one
|
|
122
|
+
* 8-byte tail — sizeof is 40 (was 48, 64 with separate char*
|
|
123
|
+
* fields, 72 with a raw next pointer). */
|
|
124
|
+
uint16_t name_hash;
|
|
125
|
+
|
|
126
|
+
/* MEASURED LAYOUT DECISION (TODO 186, revises TODO 184 round 4;
|
|
127
|
+
* round 19 revises again): sizeof was 48 through v0.26.x. 40 B
|
|
128
|
+
* (ns_cache as int32 offset + 15-bit hash + entity flag in the
|
|
129
|
+
* tail) reaches pugixml attr density (1.6/line vs 1.33). The
|
|
130
|
+
* 56 B point measured dead and the 32 B split-stream upper
|
|
131
|
+
* bound dead — 40 was the last unmeasured point on the axis. */
|
|
132
|
+
};
|
|
133
|
+
/* The inline form's flag lives in heap.length's top bit, so it
|
|
134
|
+
* requires a 64-bit size_t: on ILP32 the length word occupies the
|
|
135
|
+
* same bytes as the inline content. Values there always take the
|
|
136
|
+
* heap view (#1174); callers must gate set_inline on CAN_INLINE. */
|
|
137
|
+
#if SIZE_MAX == UINT64_MAX
|
|
138
|
+
#define LEPTRIS_ATTR_VALUE_INLINE_BIT ((size_t)1 << 63)
|
|
139
|
+
#define LEPTRIS_ATTR_VALUE_CAN_INLINE 1
|
|
140
|
+
#else
|
|
141
|
+
#define LEPTRIS_ATTR_VALUE_INLINE_BIT ((size_t)0)
|
|
142
|
+
#define LEPTRIS_ATTR_VALUE_CAN_INLINE 0
|
|
143
|
+
#endif
|
|
144
|
+
#define LEPTRIS_ATTR_VALUE_MAX_INLINE 7
|
|
145
|
+
|
|
146
|
+
static inline LeptrisStringView leptris_attr_value_sv(
|
|
147
|
+
const struct leptris_attribute* a) {
|
|
148
|
+
if (a->value.heap.length & LEPTRIS_ATTR_VALUE_INLINE_BIT) {
|
|
149
|
+
LeptrisStringView sv;
|
|
150
|
+
sv.data = a->value.inline_value;
|
|
151
|
+
sv.length = a->value.heap.length & ~LEPTRIS_ATTR_VALUE_INLINE_BIT;
|
|
152
|
+
return sv;
|
|
153
|
+
}
|
|
154
|
+
return a->value.heap;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static inline void leptris_attr_value_set_heap(
|
|
158
|
+
struct leptris_attribute* a, LeptrisStringView sv) {
|
|
159
|
+
sv.length &= ~LEPTRIS_ATTR_VALUE_INLINE_BIT;
|
|
160
|
+
a->value.heap = sv;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
static inline void leptris_attr_value_set_inline(
|
|
164
|
+
struct leptris_attribute* a, const char* s, size_t len) {
|
|
165
|
+
if (len > LEPTRIS_ATTR_VALUE_MAX_INLINE) len = LEPTRIS_ATTR_VALUE_MAX_INLINE;
|
|
166
|
+
memcpy(a->value.inline_value, s, len);
|
|
167
|
+
a->value.inline_value[len] = '\0';
|
|
168
|
+
a->value.heap.length = LEPTRIS_ATTR_VALUE_INLINE_BIT | len;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
static inline int leptris_attr_value_is_inline(
|
|
172
|
+
const struct leptris_attribute* a) {
|
|
173
|
+
return (a->value.heap.length & LEPTRIS_ATTR_VALUE_INLINE_BIT) != 0;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
/* Size pin lives with the LEPTRIS_STATIC_ASSERT macro below (C++-
|
|
178
|
+
* compatible), next to the element size pin. */
|
|
179
|
+
|
|
180
|
+
/* C-string accessors (TODO 184 rounds 3–4). The views are the
|
|
181
|
+
* single representation; their data is always NUL-terminated
|
|
182
|
+
* (parse path: in the document buffer; mutation/expansion: owned
|
|
183
|
+
* copy). attr_cvalue does NOT expand entities — callers needing
|
|
184
|
+
* expansion use leptris_element_attribute(), which materializes
|
|
185
|
+
* lazily. */
|
|
186
|
+
static inline const char* attr_cname(const struct leptris_attribute* a) {
|
|
187
|
+
return a->name_view.data ? a->name_view.data : "";
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
static inline const char* attr_cvalue(const struct leptris_attribute* a) {
|
|
191
|
+
return a ? (leptris_attr_value_sv(a).data ? leptris_attr_value_sv(a).data
|
|
192
|
+
: "")
|
|
193
|
+
: "";
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* Attr list-edge accessors (TODO 183 Phase 5). next_cp stores the
|
|
197
|
+
* byte offset to the next attr scaled by 8 (align_log2=3); attrs are
|
|
198
|
+
* 8-byte aligned pool/arena residents. The encoder falls back to the
|
|
199
|
+
* per-field overflow table when the pair spans regions (mutation-
|
|
200
|
+
* created attrs). */
|
|
201
|
+
static inline struct leptris_attribute* leptris_attr_next(
|
|
202
|
+
const struct leptris_attribute* a) {
|
|
203
|
+
return (a)
|
|
204
|
+
? (struct leptris_attribute*)leptris_compact_ptr16_decode(
|
|
205
|
+
(const void*)a, a->next_cp, 3, &a->next_cp)
|
|
206
|
+
: NULL;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
static inline void leptris_attr_set_next(struct leptris_attribute* a,
|
|
210
|
+
struct leptris_attribute* next) {
|
|
211
|
+
if (!a) return;
|
|
212
|
+
a->next_cp = leptris_compact_ptr16_encode(a, next, 3, &a->next_cp);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/* 15-bit FNV-1a of a name (round 19). Single source of truth for
|
|
216
|
+
* both the lazy attr accessor and query-side pre-filters — both
|
|
217
|
+
* sides must truncate identically or hash compares silently
|
|
218
|
+
* mismatch. Truncation: keep bits 16-30 of the 32-bit FNV (the
|
|
219
|
+
* low bits sit under the multiply's carry chain; the upper half
|
|
220
|
+
* mixes better). Returns nonzero: 0 maps to 1 so the "uncomputed"
|
|
221
|
+
* sentinel stays unambiguous. */
|
|
222
|
+
static inline uint16_t attr_hash15(const char* s, size_t len) {
|
|
223
|
+
uint32_t h = 2166136261u;
|
|
224
|
+
for (size_t i = 0; i < len; i++) {
|
|
225
|
+
h ^= (unsigned char)s[i];
|
|
226
|
+
h *= 16777619u;
|
|
227
|
+
}
|
|
228
|
+
/* Finalizer (round 20): raw FNV truncation (h>>16) mapped
|
|
229
|
+
* names differing in their last digit to hashes exactly 256
|
|
230
|
+
* apart — arithmetic progressions that collide onto one open-
|
|
231
|
+
* addressing chain at every cap ≤ 256. A murmur-style avalanche
|
|
232
|
+
* step breaks the progression before the 15-bit cut. */
|
|
233
|
+
h ^= h >> 16;
|
|
234
|
+
h *= 0x7FEB352Du;
|
|
235
|
+
h ^= h >> 15;
|
|
236
|
+
uint16_t h15 = (uint16_t)(h & 0x7FFFu);
|
|
237
|
+
return h15 ? h15 : 1;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Entity flag (round 19): name_hash bit 15. */
|
|
241
|
+
static inline int attr_has_entities(const struct leptris_attribute* a) {
|
|
242
|
+
return (a->name_hash & 0x8000u) != 0;
|
|
243
|
+
}
|
|
244
|
+
static inline void attr_set_entities(struct leptris_attribute* a, int v) {
|
|
245
|
+
if (v) a->name_hash |= 0x8000u;
|
|
246
|
+
else a->name_hash &= 0x7FFFu;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* Lazy 15-bit hash accessor (TODO 172). Computes and caches on first
|
|
250
|
+
* call, preserving the entity flag in bit 15. Thread-unsafe in the
|
|
251
|
+
* strict sense (racy writes), but the worst case is two threads
|
|
252
|
+
* both writing the same value (idempotent). Documents are
|
|
253
|
+
* single-threaded by contract. */
|
|
254
|
+
static inline uint16_t attr_name_hash(struct leptris_attribute* a) {
|
|
255
|
+
if ((a->name_hash & 0x7FFFu) == 0) {
|
|
256
|
+
a->name_hash = (uint16_t)((a->name_hash & 0x8000u) |
|
|
257
|
+
attr_hash15(a->name_view.data, a->name_view.length));
|
|
258
|
+
}
|
|
259
|
+
return (uint16_t)(a->name_hash & 0x7FFFu);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* S9 short-string helpers (the TODO 174 law, applied to the
|
|
263
|
+
* attribute hot paths): a libc strlen/memcmp call costs more than
|
|
264
|
+
* the scan for the 1-16 byte names and values that dominate
|
|
265
|
+
* attribute traffic. The length scan reads at most up to the NUL it
|
|
266
|
+
* returns — never past the terminator. */
|
|
267
|
+
static inline size_t leptris_cstr_len16(const char* s) {
|
|
268
|
+
for (size_t i = 0; i < 16; i++) if (!s[i]) return i;
|
|
269
|
+
return strlen(s);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
static inline int leptris_memeq_short(const char* a, const char* b,
|
|
273
|
+
size_t n) {
|
|
274
|
+
for (size_t i = 0; i < n; i++) if (a[i] != b[i]) return 0;
|
|
275
|
+
return 1;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* Internal: hash-prefiltered attribute find with the caller's
|
|
279
|
+
* already-computed name length (element.c). */
|
|
280
|
+
struct leptris_attribute* leptris_dom_attr_find(LeptrisElement elem,
|
|
281
|
+
const char* name,
|
|
282
|
+
size_t name_len);
|
|
283
|
+
|
|
284
|
+
/* Attribute namespace-cache accessors (TODO 173). The prefix and
|
|
285
|
+
* namespace_uri (both view and cstr form) live in a side cache struct
|
|
286
|
+
* that's only allocated when one of them is set. The common case (attr
|
|
287
|
+
* without prefix, no namespace_uri) has ns_cache_off == 0.
|
|
288
|
+
*
|
|
289
|
+
* Readers use these helpers — they return NULL / empty when no cache.
|
|
290
|
+
* Round 19: the cache is reached via a self-relative int32 offset
|
|
291
|
+
* (0 = none; overflow-table fallback for >2GB spans). */
|
|
292
|
+
static inline struct leptris_attr_ns_cache* attr_get_ns_cache(
|
|
293
|
+
struct leptris_attribute* a) {
|
|
294
|
+
return (struct leptris_attr_ns_cache*)leptris_compact_int32_decode_inline(
|
|
295
|
+
a, a->ns_cache_off, &a->ns_cache_off);
|
|
296
|
+
}
|
|
297
|
+
static inline void attr_set_ns_cache(struct leptris_attribute* a,
|
|
298
|
+
struct leptris_attr_ns_cache* ns) {
|
|
299
|
+
a->ns_cache_off = leptris_compact_int32_encode_inline(a, ns, &a->ns_cache_off);
|
|
300
|
+
}
|
|
301
|
+
static inline const char* attr_get_prefix(struct leptris_attribute* a) {
|
|
302
|
+
struct leptris_attr_ns_cache* c = attr_get_ns_cache(a);
|
|
303
|
+
return c ? c->prefix : NULL;
|
|
304
|
+
}
|
|
305
|
+
static inline const char* attr_get_namespace_uri(struct leptris_attribute* a) {
|
|
306
|
+
struct leptris_attr_ns_cache* c = attr_get_ns_cache(a);
|
|
307
|
+
return c ? c->namespace_uri : NULL;
|
|
308
|
+
}
|
|
309
|
+
static inline LeptrisStringView attr_get_prefix_view(struct leptris_attribute* a) {
|
|
310
|
+
struct leptris_attr_ns_cache* c = attr_get_ns_cache(a);
|
|
311
|
+
return c ? c->prefix_view : leptris_sv_empty();
|
|
312
|
+
}
|
|
313
|
+
static inline LeptrisStringView attr_get_namespace_uri_view(struct leptris_attribute* a) {
|
|
314
|
+
struct leptris_attr_ns_cache* c = attr_get_ns_cache(a);
|
|
315
|
+
return c ? c->namespace_uri_view : leptris_sv_empty();
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* Element node - compact architecture
|
|
319
|
+
*
|
|
320
|
+
* Uses compressed pointers and inline strings for minimal memory footprint.
|
|
321
|
+
* This enables better cache locality and faster tree traversal.
|
|
322
|
+
*
|
|
323
|
+
* Size: ~72 bytes (source positions are parser-recorded; the
|
|
324
|
+
* previous 64-byte cache-line pin is intentionally retired). *
|
|
325
|
+
* Key features:
|
|
326
|
+
* - 1-byte compressed pointers for child/sibling/attribute (±504 bytes)
|
|
327
|
+
* - 2-byte compressed pointer for parent (±262KB)
|
|
328
|
+
* - StringView storage for zero-copy parsing
|
|
329
|
+
* - uint8_t counts instead of size_t (1 byte vs 8 bytes)
|
|
330
|
+
* - 4-byte base node (vs 32 bytes in legacy) - no redundant pointers
|
|
331
|
+
* - Falls back to hash table for large offsets
|
|
332
|
+
*/
|
|
333
|
+
/* Phase 2e-B (TODO 150): merged prefix + namespace_uri into a single
|
|
334
|
+
* nullable ns_cache pointer. Most elements have no prefix and no
|
|
335
|
+
* namespace_uri → ns_cache is NULL, zero overhead. Only elements that
|
|
336
|
+
* have a prefix (qualified name like foo:bar) or resolved namespace_uri
|
|
337
|
+
* pay the 16-byte pool allocation for the cache struct.
|
|
338
|
+
*
|
|
339
|
+
* Saves 8 bytes per element (88 → 80). */
|
|
340
|
+
/* Phase 2e-B + TODO 155 Phase B: ns_cache holds BOTH the element's
|
|
341
|
+
* own prefix/URI AND the linked list of xmlns:* declarations parsed
|
|
342
|
+
* on this element. Merging the parallel `namespaces` head pointer
|
|
343
|
+
* into ns_cache saves 8 bytes per element (88 → 80).
|
|
344
|
+
*
|
|
345
|
+
* Most elements have no namespace activity → ns_cache is NULL,
|
|
346
|
+
* zero overhead. Elements that declare namespaces OR have a prefix
|
|
347
|
+
* pay one 16-byte pool allocation for the cache struct. */
|
|
348
|
+
/* One raw attribute view entry (issue #635): qname + value as
|
|
349
|
+
* written, xmlns declarations included, source order preserved. */
|
|
350
|
+
struct leptris_raw_attr {
|
|
351
|
+
const char* qname;
|
|
352
|
+
const char* value;
|
|
353
|
+
struct leptris_raw_attr* next;
|
|
354
|
+
};
|
|
355
|
+
|
|
356
|
+
struct leptris_ns_cache {
|
|
357
|
+
char* prefix; /* This element's prefix (from `<p:loc>`) */
|
|
358
|
+
char* namespace_uri; /* Resolved URI for this element's prefix */
|
|
359
|
+
struct leptris_namespace* declarations; /* xmlns:* declared on this element */
|
|
360
|
+
/* Raw attribute view (issue #635): every attr AND xmlns decl in
|
|
361
|
+
* SOURCE order — the mixed qname-ordered list the streaming
|
|
362
|
+
* transports deliver. Lazily built at parse; pool-allocated
|
|
363
|
+
* entries with borrowed (parse zero-copy) strings. */
|
|
364
|
+
struct leptris_raw_attr* raw_attrs;
|
|
365
|
+
/* Document-owned chain (issue: LSan leak): HEAP strings on a
|
|
366
|
+
* POOL-allocated cache need an explicit document_free walk. The
|
|
367
|
+
* flags mark exactly which pointers are heap-owned — the cache
|
|
368
|
+
* also carries pool-allocated and borrowed (parse zero-copy)
|
|
369
|
+
* strings the pool/buffer own. */
|
|
370
|
+
struct leptris_ns_cache* doc_next;
|
|
371
|
+
unsigned char prefix_heap;
|
|
372
|
+
unsigned char uri_heap;
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
struct leptris_element {
|
|
376
|
+
/* Compact base node (12 bytes) - MUST be first for casting. */
|
|
377
|
+
LeptrisNode base;
|
|
378
|
+
|
|
379
|
+
/* Packed header + counts + name_hash (7 bytes, fills the 8-byte
|
|
380
|
+
* tail of base's alignment slot). The name_hash is a 16-bit FNV-1a
|
|
381
|
+
* of the element's local name, computed at parse time. Used by
|
|
382
|
+
* XPath child-axis lookups and close-tag comparison to reject
|
|
383
|
+
* non-matching names via 2-byte hash compare before strcmp.
|
|
384
|
+
* Phase 2a of TODO 90 + TODO 159 fast-child-lookup. */
|
|
385
|
+
LeptrisCompactHeader header; /* 2 bytes */
|
|
386
|
+
uint16_t name_hash; /* 2 bytes — FNV-1a of local name */
|
|
387
|
+
uint8_t attr_count; /* 1 byte */
|
|
388
|
+
/* Local-name byte length, 0xFF = name longer than 254 bytes
|
|
389
|
+
* (callers fall back to strlen). Fills the last padding byte
|
|
390
|
+
* of this packed header — sizeof stays 64. Kills the per-element
|
|
391
|
+
* strlen in the serializer (8% of text-heavy serialize) and the
|
|
392
|
+
* close-tag comparison in the parser. */
|
|
393
|
+
uint8_t name_len; /* 1 byte */
|
|
394
|
+
uint16_t child_count; /* 2 bytes */
|
|
395
|
+
|
|
396
|
+
/* Cached NULL-terminated strings (16 bytes).
|
|
397
|
+
* Phase 2e-B: prefix + namespace_uri merged into ns_cache (8 bytes
|
|
398
|
+
* instead of 16). name stays inline — it's accessed on every
|
|
399
|
+
* serialize/XPath hit. */
|
|
400
|
+
char* name; /* NULL until first access */
|
|
401
|
+
struct leptris_ns_cache* ns_cache; /* NULL for non-namespaced elements */
|
|
402
|
+
|
|
403
|
+
/* Tree edges (12 bytes; was 16 before TODO 155 Phase C).
|
|
404
|
+
* last_child_off is GONE — append operations walk the child list
|
|
405
|
+
* (O(child_count)) or use the parser-local cache during parse.
|
|
406
|
+
* Saves 4 bytes per element. */
|
|
407
|
+
int32_t parent_off;
|
|
408
|
+
int32_t first_child_off;
|
|
409
|
+
int32_t next_sibling_off;
|
|
410
|
+
|
|
411
|
+
/* Attribute list (4 bytes; was 8 before TODO 155 Phase C).
|
|
412
|
+
* last_attribute_off is GONE — same reasoning. Append walks the
|
|
413
|
+
* list. Saves 4 bytes per element. */
|
|
414
|
+
int32_t first_attribute_off;
|
|
415
|
+
|
|
416
|
+
/* Parser-recorded source offsets (#1124). Raw byte offsets into
|
|
417
|
+
* doc->xml_buffer, not the old base.line sentinel encoding:
|
|
418
|
+
* - start_tag_end_off: byte just after the start tag's '>'
|
|
419
|
+
* - element_end_off: byte just after the element's final '>'
|
|
420
|
+
* 0 means unknown (mutation-created nodes). */
|
|
421
|
+
uint32_t start_tag_end_off;
|
|
422
|
+
uint32_t element_end_off;
|
|
423
|
+
|
|
424
|
+
/* TODO 155 Phase A: `document` field is GONE — element now fits
|
|
425
|
+
* one 64-byte cache line. Non-root elements reach their document
|
|
426
|
+
* via leptris_element_get_document() in dom/root_doc_map.h. */
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
struct leptris_document* leptris_element_get_document(LeptrisElement elem);
|
|
430
|
+
LeptrisMemoryPool* leptris_element_get_pool(LeptrisElement elem);
|
|
431
|
+
|
|
432
|
+
/* Round 21: header.flags bit 6 — "elem->name is preceded by 8 bytes
|
|
433
|
+
* holding the owning document pointer" (mutation name-block carve
|
|
434
|
+
* layout). Lets get_document resolve UNATTACHED mutation elements
|
|
435
|
+
* with zero registration: the map is only consulted for roots and
|
|
436
|
+
* map-registered (parse/copy) elements; a stateless backpointer
|
|
437
|
+
* replaces the register-on-create / unregister-on-attach pair that
|
|
438
|
+
* cost ~11ns per append. */
|
|
439
|
+
#define LEPTRIS_NAMEBP_FLAG 0x40u
|
|
440
|
+
|
|
441
|
+
/* Lane 18: header.flags bit 5 — "this element's attributes are
|
|
442
|
+
* doc-index-served". elem->attr_count is uint8_t and wraps past
|
|
443
|
+
* 255; the walk-vs-index threshold must not oscillate with the
|
|
444
|
+
* wrapped count or high-attr elements periodically walk the whole
|
|
445
|
+
* chain (O(N) per set). Once set, never cleared: removals leave
|
|
446
|
+
* tombstones in the index and lookups stay correct. */
|
|
447
|
+
#define LEPTRIS_ATTR_INDEXED_FLAG 0x20u
|
|
448
|
+
|
|
449
|
+
static inline int leptris_elem_has_namebp(const LeptrisElement e) {
|
|
450
|
+
return (e->header.flags & LEPTRIS_NAMEBP_FLAG) != 0;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
static inline struct leptris_document* leptris_elem_namebp_doc(
|
|
454
|
+
const LeptrisElement e) {
|
|
455
|
+
/* name points at slot+8; slot start holds the doc pointer. */
|
|
456
|
+
return ((struct leptris_document* const*)e->name)[-1];
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/* Compute 16-bit FNV-1a hash of an element name string. Used
|
|
460
|
+
* together with elem->name_hash for fast pre-filtering in child-
|
|
461
|
+
* axis lookups. TODO 159: fast child-name matching. */static inline uint16_t leptris_name_hash_compute(const char* name) {
|
|
462
|
+
uint16_t h = 0x811C;
|
|
463
|
+
for (const char* c = name; *c; c++) {
|
|
464
|
+
h ^= (unsigned char)*c;
|
|
465
|
+
h *= 0x0193;
|
|
466
|
+
}
|
|
467
|
+
return h;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* Fast element-name equality check: compare 2-byte hash first,
|
|
471
|
+
* fall back to strcmp only on hash match. Rejects non-matching
|
|
472
|
+
* names in ~1ns vs ~5ns for strcmp on short names. */
|
|
473
|
+
static inline int leptris_elem_name_is(LeptrisElement e, const char* name,
|
|
474
|
+
uint16_t target_hash) {
|
|
475
|
+
if (!e || !e->name || e->name_hash != target_hash) return 0;
|
|
476
|
+
return strcmp(e->name, name) == 0;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/* Inline accessors — use these instead of direct field access. */
|
|
480
|
+
static inline char* leptris_elem_prefix(const LeptrisElement e) {
|
|
481
|
+
return e && e->ns_cache ? e->ns_cache->prefix : NULL;
|
|
482
|
+
}
|
|
483
|
+
static inline char* leptris_elem_ns_uri(const LeptrisElement e) {
|
|
484
|
+
return e && e->ns_cache ? e->ns_cache->namespace_uri : NULL;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/* Allocate ns_cache if needed, then set the prefix. Pool required
|
|
488
|
+
* for the one-time allocation. The cache struct is zeroed so all
|
|
489
|
+
* fields (prefix, namespace_uri, declarations) start as NULL. */
|
|
490
|
+
static inline void leptris_elem_set_prefix(LeptrisElement e, char* prefix,
|
|
491
|
+
LeptrisMemoryPool* pool) {
|
|
492
|
+
if (!e) return;
|
|
493
|
+
if (!e->ns_cache) {
|
|
494
|
+
if (!pool) return;
|
|
495
|
+
e->ns_cache = (struct leptris_ns_cache*)
|
|
496
|
+
leptris_pool_alloc(pool, sizeof(struct leptris_ns_cache));
|
|
497
|
+
if (!e->ns_cache) return;
|
|
498
|
+
e->ns_cache->prefix = NULL;
|
|
499
|
+
e->ns_cache->namespace_uri = NULL;
|
|
500
|
+
e->ns_cache->declarations = NULL;
|
|
501
|
+
}
|
|
502
|
+
e->ns_cache->prefix = prefix;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
/* Allocate ns_cache if needed, then set the namespace URI. */
|
|
506
|
+
static inline void leptris_elem_set_ns_uri(LeptrisElement e, char* uri,
|
|
507
|
+
LeptrisMemoryPool* pool) {
|
|
508
|
+
if (!e) return;
|
|
509
|
+
if (!e->ns_cache) {
|
|
510
|
+
if (!pool) return;
|
|
511
|
+
e->ns_cache = (struct leptris_ns_cache*)
|
|
512
|
+
leptris_pool_alloc(pool, sizeof(struct leptris_ns_cache));
|
|
513
|
+
if (!e->ns_cache) return;
|
|
514
|
+
e->ns_cache->prefix = NULL;
|
|
515
|
+
e->ns_cache->namespace_uri = NULL;
|
|
516
|
+
e->ns_cache->declarations = NULL;
|
|
517
|
+
}
|
|
518
|
+
e->ns_cache->namespace_uri = uri;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/* #846: split a just-stored QName copy ("p:local") into prefix +
|
|
522
|
+
* local, giving constructed elements the same shape the parser
|
|
523
|
+
* produces (dp_split_hash_name): name points at the local part,
|
|
524
|
+
* ns_cache->prefix at the pre-colon span, hash/len recomputed for
|
|
525
|
+
* the local part. The name storage must be owned and writable
|
|
526
|
+
* (pool or mut-block copy) — the split NULs the colon in place.
|
|
527
|
+
* No-op for colon-free names. */
|
|
528
|
+
static inline void leptris_elem_split_qname(LeptrisElement e,
|
|
529
|
+
LeptrisMemoryPool* pool) {
|
|
530
|
+
if (!e || !e->name) return;
|
|
531
|
+
/* Colon probe (S8): a prefix needs >= 3 bytes (prefix + ':' +
|
|
532
|
+
* local), and e->name_len is exact here (every caller sets it
|
|
533
|
+
* before splitting; >254-byte names store 0xFF which keeps the
|
|
534
|
+
* probe). 1-2 byte names skip entirely; short names scan inline —
|
|
535
|
+
* one strchr libc call per created element cost more than the
|
|
536
|
+
* scan (the dp_split_hash_name law). */
|
|
537
|
+
char* colon = NULL;
|
|
538
|
+
size_t probe_len = (e->name_len != 0xFF) ? e->name_len : strlen(e->name);
|
|
539
|
+
if (probe_len >= 3) {
|
|
540
|
+
if (probe_len <= 16) {
|
|
541
|
+
for (const char* c9 = e->name; *c9; c9++) {
|
|
542
|
+
if (*c9 == ':') { colon = (char*)c9; break; }
|
|
543
|
+
}
|
|
544
|
+
} else {
|
|
545
|
+
colon = strchr(e->name, ':');
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
if (!colon) return;
|
|
549
|
+
/* A colon with NO local part (a trailing ':') is not a QName
|
|
550
|
+
* split — garbage tag names like the tokenizer's 'rdar:' keep
|
|
551
|
+
* their whole token as the local name (html5lib semantics,
|
|
552
|
+
* webkit01:14); splitting produced an empty element name. */
|
|
553
|
+
if (colon[1] == '\0') return;
|
|
554
|
+
/* Lane 18 P1: read the doc backpointer BEFORE the split moves
|
|
555
|
+
* the name — then re-stamp it in a fresh slot so namebp
|
|
556
|
+
* resolution survives (public creates no longer register in
|
|
557
|
+
* the map; the re-stamp keeps prefixed elements resolvable
|
|
558
|
+
* while detached). */
|
|
559
|
+
struct leptris_document* bp_doc =
|
|
560
|
+
leptris_elem_has_namebp(e) ? leptris_elem_namebp_doc(e) : NULL;
|
|
561
|
+
*colon = '\0';
|
|
562
|
+
leptris_elem_set_prefix(e, e->name, pool);
|
|
563
|
+
e->name = colon + 1;
|
|
564
|
+
if (bp_doc && pool) {
|
|
565
|
+
size_t keep_len = strlen(e->name);
|
|
566
|
+
char* slot = (char*)leptris_pool_alloc(
|
|
567
|
+
pool, sizeof(struct leptris_document*) + keep_len + 1);
|
|
568
|
+
if (slot) {
|
|
569
|
+
*(struct leptris_document**)slot = bp_doc;
|
|
570
|
+
memcpy(slot + sizeof(struct leptris_document*),
|
|
571
|
+
e->name, keep_len);
|
|
572
|
+
slot[sizeof(struct leptris_document*) + keep_len] = '\0';
|
|
573
|
+
e->name = slot + sizeof(struct leptris_document*);
|
|
574
|
+
} else {
|
|
575
|
+
e->header.flags &=
|
|
576
|
+
(uint8_t)(~LEPTRIS_NAMEBP_FLAG & 0xFFu);
|
|
577
|
+
}
|
|
578
|
+
} else {
|
|
579
|
+
/* The name moved into the name bytes: the Round-21
|
|
580
|
+
* backpointer slot at name[-1] is no longer the doc — the
|
|
581
|
+
* flag must not outlive the slot. */
|
|
582
|
+
e->header.flags &= (uint8_t)(~LEPTRIS_NAMEBP_FLAG & 0xFFu);
|
|
583
|
+
}
|
|
584
|
+
size_t local_len = strlen(e->name);
|
|
585
|
+
e->name_len = (local_len > 254) ? 0xFF : (uint8_t)local_len;
|
|
586
|
+
e->name_hash = leptris_name_hash_compute(e->name);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/* Get the linked list of xmlns:* declarations on this element.
|
|
590
|
+
* Returns NULL when the element has no namespace declarations
|
|
591
|
+
* (the overwhelmingly common case). TODO 155 Phase B. */
|
|
592
|
+
static inline struct leptris_namespace* leptris_elem_namespaces(const LeptrisElement e) {
|
|
593
|
+
return e && e->ns_cache ? e->ns_cache->declarations : NULL;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/* Ensure ns_cache exists (allocating if needed) and return a
|
|
597
|
+
* writable pointer to the declarations head. Used by mutation
|
|
598
|
+
* paths that append xmlns:* declarations. */
|
|
599
|
+
static inline struct leptris_ns_cache** leptris_elem_cache_ptr(
|
|
600
|
+
LeptrisElement e, LeptrisMemoryPool* pool) {
|
|
601
|
+
if (!e) return NULL;
|
|
602
|
+
if (!e->ns_cache) {
|
|
603
|
+
if (!pool) return NULL;
|
|
604
|
+
e->ns_cache = (struct leptris_ns_cache*)
|
|
605
|
+
leptris_pool_alloc(pool, sizeof(struct leptris_ns_cache));
|
|
606
|
+
if (!e->ns_cache) return NULL;
|
|
607
|
+
e->ns_cache->prefix = NULL;
|
|
608
|
+
e->ns_cache->namespace_uri = NULL;
|
|
609
|
+
e->ns_cache->declarations = NULL;
|
|
610
|
+
e->ns_cache->raw_attrs = NULL;
|
|
611
|
+
}
|
|
612
|
+
return &e->ns_cache;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
static inline struct leptris_namespace** leptris_elem_namespaces_ptr(
|
|
616
|
+
LeptrisElement e, LeptrisMemoryPool* pool) {
|
|
617
|
+
struct leptris_ns_cache** c = leptris_elem_cache_ptr(e, pool);
|
|
618
|
+
return c ? &(*c)->declarations : NULL;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
/* Compile-time element-size tracker (TODO 90).
|
|
623
|
+
*
|
|
624
|
+
* Current layout (Phase 1 + 2a + 2b + 2d complete, 88 bytes):
|
|
625
|
+
* - 12-byte base (LeptrisNode + uint32_t line for #223)
|
|
626
|
+
* + 2-byte header + 1-byte attr_count + 2-byte child_count
|
|
627
|
+
* packed into the 4-byte tail of base's alignment slot
|
|
628
|
+
* (5 bytes used, 3 pad)
|
|
629
|
+
* - 24 bytes of cached name/prefix/namespace_uri char* pointers
|
|
630
|
+
* - 16 bytes of int32_t tree-edge offsets (parent, first/last/next)
|
|
631
|
+
* - 8 bytes of int32_t attribute-list offsets (first, last)
|
|
632
|
+
* - 16 bytes of document context (namespaces, document)
|
|
633
|
+
* - 8 bytes binding_wrapper (LeptrisNode base, #262 FFI cache)
|
|
634
|
+
*
|
|
635
|
+
* pugixml compact node: 44 bytes. The binding_wrapper field adds
|
|
636
|
+
* ~10% memory but eliminates per-node FFI call overhead for
|
|
637
|
+
* language bindings (7× nodeset XPath speedup at Ruby level). */
|
|
638
|
+
#ifndef LEPTRIS_STATIC_ASSERT
|
|
639
|
+
# ifdef __cplusplus
|
|
640
|
+
# define LEPTRIS_STATIC_ASSERT(cond, msg) static_assert(cond, msg)
|
|
641
|
+
# elif defined(_MSC_VER)
|
|
642
|
+
# define LEPTRIS_STATIC_ASSERT(cond, msg) static_assert(cond, msg)
|
|
643
|
+
# else
|
|
644
|
+
# define LEPTRIS_STATIC_ASSERT(cond, msg) _Static_assert(cond, msg)
|
|
645
|
+
# endif
|
|
646
|
+
#endif
|
|
647
|
+
|
|
648
|
+
/* Size pins are per-wordsize (#1174): the LP64 layouts shrink on
|
|
649
|
+
* ILP32 targets (armv7, i686) where pointers are 4 bytes. The
|
|
650
|
+
* pinned structs hold only pointers and int-sized scalars, so i686
|
|
651
|
+
* and armv7 produce identical layouts. */
|
|
652
|
+
#if SIZE_MAX == UINT64_MAX
|
|
653
|
+
LEPTRIS_STATIC_ASSERT(sizeof(struct leptris_element) == 72,
|
|
654
|
+
"leptris_element source positions layout: 72 bytes");
|
|
655
|
+
|
|
656
|
+
LEPTRIS_STATIC_ASSERT(sizeof(struct leptris_attribute) == 40,
|
|
657
|
+
"round 19 attr layout: 16+16+4+2+2 = 40");
|
|
658
|
+
#else
|
|
659
|
+
/* ILP32: LeptrisNode 24->16 (binding_wrapper), element name +
|
|
660
|
+
* ns_cache pointers 8->4 each -> 56; attribute name_view 16->8
|
|
661
|
+
* (value union stays 16 via inline_value[16]) -> 32. */
|
|
662
|
+
LEPTRIS_STATIC_ASSERT(sizeof(struct leptris_element) == 56,
|
|
663
|
+
"leptris_element ILP32 layout: 56 bytes");
|
|
664
|
+
|
|
665
|
+
LEPTRIS_STATIC_ASSERT(sizeof(struct leptris_attribute) == 32,
|
|
666
|
+
"leptris_attribute ILP32 layout: 8+16+4+2+2 = 32");
|
|
667
|
+
#endif
|
|
668
|
+
|
|
669
|
+
/* ============================================================================
|
|
670
|
+
* Compact tree-edge accessors (Phase 2b of TODO 90)
|
|
671
|
+
*
|
|
672
|
+
* Tree edges (parent, first_child, last_child, next_sibling) are stored
|
|
673
|
+
* as int32_t byte-offsets relative to the element's own address, not as
|
|
674
|
+
* raw pointers. This cuts the element struct from 104 → 88 bytes (better
|
|
675
|
+
* cache locality, fewer pool pages on large documents).
|
|
676
|
+
*
|
|
677
|
+
* Offset 0 encodes NULL (no element has zero offset to itself because
|
|
678
|
+
* pool-allocated elements are 8-byte aligned). Read via these inline
|
|
679
|
+
* accessors; never read the `_off` fields directly.
|
|
680
|
+
*
|
|
681
|
+
* Type aliases preserve the original types: parent is always an element;
|
|
682
|
+
* the child/sibling edges may point to any node type (element, text,
|
|
683
|
+
* comment, cdata, pi) so they return LeptrisNode*.
|
|
684
|
+
* ============================================================================ */
|
|
685
|
+
|
|
686
|
+
static inline LeptrisElement leptris_elem_parent(const LeptrisElement e) {
|
|
687
|
+
return (e)
|
|
688
|
+
? (LeptrisElement)leptris_compact_int32_decode_inline((void*)e, e->parent_off, &e->parent_off)
|
|
689
|
+
: NULL;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
static inline LeptrisNode* leptris_elem_first_child(const LeptrisElement e) {
|
|
693
|
+
return (e)
|
|
694
|
+
? (LeptrisNode*)leptris_compact_int32_decode_inline((void*)e, e->first_child_off, &e->first_child_off)
|
|
695
|
+
: NULL;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
static inline LeptrisNode* leptris_elem_last_child(const LeptrisElement e) {
|
|
699
|
+
/* TODO 155 Phase C: last_child_off removed. Walk the child list
|
|
700
|
+
* to find the tail. O(child_count); the typical element has few
|
|
701
|
+
* children, and cold paths (mutation, traversal) tolerable.
|
|
702
|
+
* Parse path uses a parser-local cache (DParser.last_child_of_depth)
|
|
703
|
+
* to avoid this walk during the hot parse loop. */
|
|
704
|
+
if (!e) return NULL;
|
|
705
|
+
LeptrisNode* c = leptris_elem_first_child(e);
|
|
706
|
+
if (!c) return NULL;
|
|
707
|
+
while (1) {
|
|
708
|
+
LeptrisNode* next = leptris_node_get_next_sibling(c);
|
|
709
|
+
if (!next) return c;
|
|
710
|
+
c = next;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
static inline LeptrisNode* leptris_elem_next_sibling(const LeptrisElement e) {
|
|
715
|
+
return (e)
|
|
716
|
+
? (LeptrisNode*)leptris_compact_int32_decode_inline((void*)e, e->next_sibling_off, &e->next_sibling_off)
|
|
717
|
+
: NULL;
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
/* Setters. NULL target resets the offset to 0. TODO 121: on int32
|
|
721
|
+
* overflow (macOS ASLR can place pool-resident nodes > 2GB apart),
|
|
722
|
+
* fall back to the global overflow table keyed on the field address
|
|
723
|
+
* instead of silently dropping the edge. */
|
|
724
|
+
static inline void leptris_elem_set_parent(LeptrisElement e, LeptrisElement parent) {
|
|
725
|
+
if (!e) return;
|
|
726
|
+
e->parent_off = leptris_compact_int32_encode_inline(e, parent, &e->parent_off);
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
static inline void leptris_elem_set_first_child(LeptrisElement e, LeptrisNode* child) {
|
|
730
|
+
if (!e) return;
|
|
731
|
+
e->first_child_off = leptris_compact_int32_encode_inline(e, child, &e->first_child_off);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
static inline void leptris_elem_set_last_child(LeptrisElement e, LeptrisNode* child) {
|
|
735
|
+
/* TODO 155 Phase C: last_child_off removed. This setter is now a
|
|
736
|
+
* no-op retained for ABI compatibility. Callers that need to
|
|
737
|
+
* append a child use leptris_element_append_child_internal, which
|
|
738
|
+
* walks the child list (or uses the parser-local cache). */
|
|
739
|
+
(void)e; (void)child;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
static inline void leptris_elem_set_next_sibling(LeptrisElement e, LeptrisNode* sibling) {
|
|
743
|
+
if (!e) return;
|
|
744
|
+
e->next_sibling_off = leptris_compact_int32_encode_inline(e, sibling, &e->next_sibling_off);
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/* Compact attribute-list accessors (Phase 2d of TODO 90).
|
|
748
|
+
* first_attribute and last_attribute are int32_t byte-offsets to
|
|
749
|
+
* leptris_attribute records in the document's pool; 0 = empty list.
|
|
750
|
+
* Pool-allocated, same safety argument as the tree edges. */
|
|
751
|
+
static inline struct leptris_attribute* leptris_elem_first_attribute(const LeptrisElement e) {
|
|
752
|
+
return (e)
|
|
753
|
+
? (struct leptris_attribute*)leptris_compact_int32_decode_inline((void*)e, e->first_attribute_off, &e->first_attribute_off)
|
|
754
|
+
: NULL;
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
static inline struct leptris_attribute* leptris_elem_last_attribute(const LeptrisElement e) {
|
|
758
|
+
/* TODO 155 Phase C: last_attribute_off removed. Walk the attr
|
|
759
|
+
* list to find the tail. O(attr_count) — typically ≤ 10. */
|
|
760
|
+
if (!e) return NULL;
|
|
761
|
+
struct leptris_attribute* a = leptris_elem_first_attribute(e);
|
|
762
|
+
if (!a) return NULL;
|
|
763
|
+
while (leptris_attr_next(a)) a = leptris_attr_next(a);
|
|
764
|
+
return a;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
static inline void leptris_elem_set_first_attribute(LeptrisElement e, struct leptris_attribute* attr) {
|
|
768
|
+
if (!e) return;
|
|
769
|
+
e->first_attribute_off = leptris_compact_int32_encode_inline(e, attr, &e->first_attribute_off);
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
static inline void leptris_elem_set_last_attribute(LeptrisElement e, struct leptris_attribute* attr) {
|
|
773
|
+
/* TODO 155 Phase C: last_attribute_off removed. No-op retained
|
|
774
|
+
* for ABI compatibility. Callers should use the append helpers
|
|
775
|
+
* (leptris_elem_last_attribute walks the list to find the tail). */
|
|
776
|
+
(void)e; (void)attr;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/* LeptrisElement typedef comes from the public include/leptris/types.h
|
|
780
|
+
* (re-exported via leptris.h). No local redefinition — see TODO 12. */
|
|
781
|
+
|
|
782
|
+
/* ============================================================================
|
|
783
|
+
* Element Creation
|
|
784
|
+
* ============================================================================ */
|
|
785
|
+
|
|
786
|
+
/* Create element with StringView (true zero-copy!) */
|
|
787
|
+
LeptrisElement leptris_element_create_with_view(
|
|
788
|
+
LeptrisStringView name_view,
|
|
789
|
+
LeptrisMemoryPool* pool
|
|
790
|
+
);
|
|
791
|
+
|
|
792
|
+
/* Create element with in-place string (zero-copy) */
|
|
793
|
+
LeptrisElement leptris_element_create_pooled_inplace(char* name, LeptrisMemoryPool* pool);
|
|
794
|
+
|
|
795
|
+
/* Create element skeleton for the deferred-NUL zero-copy parser path
|
|
796
|
+
* (TODO 113 Phase 5). Element name is left NULL — parser fills it in
|
|
797
|
+
* after consuming the opening tag. See leptris_element_create_zero_copy. */
|
|
798
|
+
LeptrisElement leptris_element_create_zero_copy(LeptrisMemoryPool* pool);
|
|
799
|
+
|
|
800
|
+
/* Create element using memory pool (O(1) bump allocation).
|
|
801
|
+
* Single pool-routed entry point — TODO 26 removed the _fast wrapper. */
|
|
802
|
+
LeptrisElement leptris_element_create_pooled(const char* name, LeptrisMemoryPool* pool);
|
|
803
|
+
|
|
804
|
+
void leptris_element_free(LeptrisElement elem);
|
|
805
|
+
|
|
806
|
+
/* ============================================================================
|
|
807
|
+
* Hot Accessor Functions (static inline for performance)
|
|
808
|
+
* ============================================================================ */
|
|
809
|
+
|
|
810
|
+
/* These are static inline to eliminate function call overhead.
|
|
811
|
+
* The compiler can inline these across translation units for maximum performance.
|
|
812
|
+
* All are simple field accesses with NULL checks - O(1) operations. */
|
|
813
|
+
|
|
814
|
+
static inline LeptrisElement leptris_element_get_parent(LeptrisElement elem) {
|
|
815
|
+
return leptris_elem_parent(elem);
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
static inline LeptrisElement leptris_element_get_first_child(LeptrisElement elem) {
|
|
819
|
+
if (!elem) return NULL;
|
|
820
|
+
|
|
821
|
+
/* Fast path: if first child is an element, return immediately
|
|
822
|
+
* This covers the common case where elements are directly nested */
|
|
823
|
+
LeptrisNode* node = leptris_elem_first_child(elem);
|
|
824
|
+
if (node && node->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
825
|
+
return (LeptrisElement)node;
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
/* Slow path: skip non-element nodes (text, comments, etc.) */
|
|
829
|
+
while (node) {
|
|
830
|
+
if (node->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
831
|
+
return (LeptrisElement)node;
|
|
832
|
+
}
|
|
833
|
+
node = leptris_node_get_next_sibling(node);
|
|
834
|
+
}
|
|
835
|
+
return NULL;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
static inline LeptrisElement leptris_element_get_last_child(LeptrisElement elem) {
|
|
839
|
+
if (!elem) return NULL;
|
|
840
|
+
|
|
841
|
+
/* last_child might point to a non-element node (text, comment, etc.)
|
|
842
|
+
* We need to scan from first_child to find the last element child */
|
|
843
|
+
LeptrisNode* node = leptris_elem_first_child(elem);
|
|
844
|
+
LeptrisElement last_elem = NULL;
|
|
845
|
+
|
|
846
|
+
while (node) {
|
|
847
|
+
if (node->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
848
|
+
last_elem = (LeptrisElement)node;
|
|
849
|
+
}
|
|
850
|
+
node = leptris_node_get_next_sibling(node);
|
|
851
|
+
}
|
|
852
|
+
return last_elem;
|
|
853
|
+
}
|
|
854
|
+
|
|
855
|
+
static inline LeptrisElement leptris_element_get_next_sibling(LeptrisElement elem) {
|
|
856
|
+
if (!elem) return NULL;
|
|
857
|
+
/* Get next sibling and skip non-element nodes
|
|
858
|
+
* This implements the XPath semantics where sibling axis only returns elements */
|
|
859
|
+
LeptrisNode* next = leptris_elem_next_sibling(elem);
|
|
860
|
+
|
|
861
|
+
/* Fast path: if next sibling is an element, return immediately
|
|
862
|
+
* This covers the common case where elements are directly nested */
|
|
863
|
+
if (next && next->type == LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
864
|
+
return (LeptrisElement)next;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
/* Slow path: skip non-element nodes (text, comments, etc.) */
|
|
868
|
+
while (next && next->type != LEPTRIS_NODE_TYPE_ELEMENT) {
|
|
869
|
+
next = leptris_node_get_next_sibling(next);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
return (LeptrisElement)next;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
/* ============================================================================
|
|
876
|
+
* Compressed Pointer Access Functions (deprecated/removed - use inline above)
|
|
877
|
+
* ============================================================================ */
|
|
878
|
+
LeptrisElement leptris_element_get_parent(LeptrisElement elem);
|
|
879
|
+
LeptrisElement leptris_element_get_first_child(LeptrisElement elem);
|
|
880
|
+
LeptrisElement leptris_element_get_last_child(LeptrisElement elem);
|
|
881
|
+
LeptrisElement leptris_element_get_next_sibling(LeptrisElement elem);
|
|
882
|
+
|
|
883
|
+
/* Set encoded pointers in element */
|
|
884
|
+
void leptris_element_set_parent(LeptrisElement elem, LeptrisElement parent);
|
|
885
|
+
void leptris_element_set_first_child(LeptrisElement elem, LeptrisElement child);
|
|
886
|
+
void leptris_element_set_last_child(LeptrisElement elem, LeptrisElement child);
|
|
887
|
+
void leptris_element_set_next_sibling(LeptrisElement elem, LeptrisElement sibling);
|
|
888
|
+
|
|
889
|
+
/* Cache invalidation hook: no-op since children_array was removed in
|
|
890
|
+
* TODO 90 Phase 1. Retained as a single mutation-site chokepoint so a
|
|
891
|
+
* future compact-storage cache (e.g. pugixml-style compact pointer
|
|
892
|
+
* table) can plug in without touching every mutation call site. */
|
|
893
|
+
static inline void leptris_element_invalidate_child_cache(LeptrisElement elem) {
|
|
894
|
+
(void)elem;
|
|
895
|
+
}
|
|
896
|
+
|
|
897
|
+
/* ============================================================================
|
|
898
|
+
* Attribute Access Functions
|
|
899
|
+
* ============================================================================ */
|
|
900
|
+
|
|
901
|
+
/* Get first attribute from element */
|
|
902
|
+
struct leptris_attribute* leptris_element_get_first_attribute(LeptrisElement elem);
|
|
903
|
+
|
|
904
|
+
/* Set first attribute in element */
|
|
905
|
+
void leptris_element_set_first_attribute(LeptrisElement elem, struct leptris_attribute* attr);
|
|
906
|
+
|
|
907
|
+
/* Get attribute count (size_t for public API compatibility — TODO 138) */
|
|
908
|
+
LEPTRIS_API size_t leptris_element_attribute_count(LeptrisElement elem);
|
|
909
|
+
|
|
910
|
+
/* Get attribute by index */
|
|
911
|
+
struct leptris_attribute* leptris_element_get_attribute_by_index(LeptrisElement elem, uint8_t index);
|
|
912
|
+
|
|
913
|
+
/* Get attribute by name */
|
|
914
|
+
struct leptris_attribute* leptris_element_get_attribute_by_name(LeptrisElement elem, const char* name);
|
|
915
|
+
|
|
916
|
+
/* Get attribute by name (StringView version - internal, faster) */
|
|
917
|
+
struct leptris_attribute* leptris_element_get_attribute_by_name_view(LeptrisElement elem, LeptrisStringView name);
|
|
918
|
+
|
|
919
|
+
/* Add attribute to element */
|
|
920
|
+
int leptris_element_add_attribute(LeptrisElement elem,
|
|
921
|
+
LeptrisStringView name_view,
|
|
922
|
+
LeptrisStringView value_view,
|
|
923
|
+
LeptrisMemoryPool* pool);
|
|
924
|
+
|
|
925
|
+
/* Add attribute in deferred-NUL mode (TODO 113 Phase 5).
|
|
926
|
+
* Leaves attr->name and attr->value NULL; parser finalizes them
|
|
927
|
+
* after consuming the opening tag. */
|
|
928
|
+
int leptris_element_add_attribute_zero_copy(LeptrisElement elem,
|
|
929
|
+
LeptrisStringView name_view,
|
|
930
|
+
LeptrisStringView value_view,
|
|
931
|
+
LeptrisMemoryPool* pool);
|
|
932
|
+
|
|
933
|
+
/* ============================================================================
|
|
934
|
+
* Name and Namespace Access
|
|
935
|
+
* ============================================================================ */
|
|
936
|
+
|
|
937
|
+
/* Get element name (lazy conversion from StringView to C string) */
|
|
938
|
+
const char* leptris_element_get_name(LeptrisElement elem);
|
|
939
|
+
|
|
940
|
+
/* Set prefix using StringView (zero-copy!) */
|
|
941
|
+
|
|
942
|
+
/* Set namespace URI from StringView (eager pool-strdup — TODO 90).
|
|
943
|
+
* The namespace_uri_view field was removed from the struct; this
|
|
944
|
+
* setter does the conversion eagerly so the cached char* is always
|
|
945
|
+
* available. */
|
|
946
|
+
void leptris_element_set_namespace_uri_view(LeptrisElement elem, LeptrisStringView uri_view);
|
|
947
|
+
|
|
948
|
+
/* Get element prefix */
|
|
949
|
+
const char* leptris_element_get_prefix(LeptrisElement elem);
|
|
950
|
+
|
|
951
|
+
/* Get element namespace URI */
|
|
952
|
+
const char* leptris_element_get_namespace_uri(LeptrisElement elem);
|
|
953
|
+
|
|
954
|
+
/* Legacy functions for C string input */
|
|
955
|
+
void leptris_element_set_prefix(LeptrisElement elem, const char* prefix);
|
|
956
|
+
void leptris_element_set_namespace_uri(LeptrisElement elem, const char* uri);
|
|
957
|
+
|
|
958
|
+
/* ============================================================================
|
|
959
|
+
* Internal StringView Accessors (for performance-critical internal code)
|
|
960
|
+
* ============================================================================ */
|
|
961
|
+
|
|
962
|
+
/* Get element name as StringView (derived from cached char* — TODO 90). */
|
|
963
|
+
static inline LeptrisStringView leptris_element_name_view(LeptrisElement elem) {
|
|
964
|
+
return elem && elem->name
|
|
965
|
+
? leptris_sv_from_ptr(elem->name, strlen(elem->name))
|
|
966
|
+
: leptris_sv_empty();
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
/* Get element prefix as StringView (NO conversion, O(1) access) */
|
|
970
|
+
static inline LeptrisStringView leptris_element_prefix_view(LeptrisElement elem) {
|
|
971
|
+
char* p = leptris_elem_prefix(elem);
|
|
972
|
+
return p ? leptris_sv_from_ptr(p, strlen(p)) : leptris_sv_empty();
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
/* Get element namespace URI as StringView (derived from cached char*). */
|
|
976
|
+
static inline LeptrisStringView leptris_element_namespace_view(LeptrisElement elem) {
|
|
977
|
+
char* u = leptris_elem_ns_uri(elem);
|
|
978
|
+
return u ? leptris_sv_from_ptr(u, strlen(u)) : leptris_sv_empty();
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
/* Get attribute name as StringView (NO conversion, O(1) access) */
|
|
982
|
+
static inline LeptrisStringView leptris_attribute_name_view(const struct leptris_attribute* attr) {
|
|
983
|
+
return attr ? attr->name_view : leptris_sv_empty();
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/* Get attribute value as StringView (NO conversion, O(1) access) */
|
|
987
|
+
static inline LeptrisStringView leptris_attribute_value_view(const struct leptris_attribute* attr) {
|
|
988
|
+
return attr ? leptris_attr_value_sv(attr) : leptris_sv_empty();
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
/* Fast name comparison helpers (for hot paths like traversal) */
|
|
992
|
+
static inline int leptris_element_name_equals(LeptrisElement elem, LeptrisStringView name) {
|
|
993
|
+
if (!elem || !elem->name) return 0;
|
|
994
|
+
return name.length == strlen(elem->name) &&
|
|
995
|
+
memcmp(elem->name, name.data, name.length) == 0;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
static inline int leptris_element_name_equals_lit(LeptrisElement elem, const char* lit) {
|
|
999
|
+
if (!elem || !lit || !elem->name) return 0;
|
|
1000
|
+
return strcmp(elem->name, lit) == 0;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
/* ============================================================================
|
|
1004
|
+
* Child Access Functions
|
|
1005
|
+
* ============================================================================ */
|
|
1006
|
+
|
|
1007
|
+
/* Get child count */
|
|
1008
|
+
LEPTRIS_API size_t leptris_element_child_count(LeptrisElement elem);
|
|
1009
|
+
|
|
1010
|
+
/* Get child by index */
|
|
1011
|
+
LeptrisElement leptris_element_get_child(LeptrisElement elem, uint16_t index);
|
|
1012
|
+
|
|
1013
|
+
/* ============================================================================
|
|
1014
|
+
* Legacy Public API Functions (compatibility wrappers)
|
|
1015
|
+
* ============================================================================ */
|
|
1016
|
+
|
|
1017
|
+
/* Add attribute (legacy C string API) */
|
|
1018
|
+
void leptris_element_add_attribute_legacy(LeptrisElement elem,
|
|
1019
|
+
const char* name,
|
|
1020
|
+
const char* value);
|
|
1021
|
+
|
|
1022
|
+
/* Add attribute using memory pool (fast) */
|
|
1023
|
+
void leptris_element_add_attribute_pooled(LeptrisElement elem,
|
|
1024
|
+
const char* name,
|
|
1025
|
+
const char* value,
|
|
1026
|
+
LeptrisMemoryPool* pool);
|
|
1027
|
+
|
|
1028
|
+
/* Add attribute with in-place strings (zero-copy) */
|
|
1029
|
+
void leptris_element_add_attribute_pooled_inplace(LeptrisElement elem,
|
|
1030
|
+
char* name,
|
|
1031
|
+
char* value,
|
|
1032
|
+
LeptrisMemoryPool* pool);
|
|
1033
|
+
|
|
1034
|
+
/* Get attribute value by name (legacy API) */
|
|
1035
|
+
const char* leptris_element_get_attribute_legacy(LeptrisElement elem, const char* name);
|
|
1036
|
+
|
|
1037
|
+
/* NOTE: Use leptris_namespace_new() + leptris_element_add_namespace() from leptris_memory.h
|
|
1038
|
+
* for proper namespace management. This function is deprecated. */
|
|
1039
|
+
void leptris_element_add_namespace_deprecated(LeptrisElement elem,
|
|
1040
|
+
const char* prefix,
|
|
1041
|
+
const char* uri);
|
|
1042
|
+
|
|
1043
|
+
/* Add namespace with in-place strings (zero-copy) */
|
|
1044
|
+
void leptris_element_add_namespace_inplace(LeptrisElement elem,
|
|
1045
|
+
char* prefix,
|
|
1046
|
+
char* uri,
|
|
1047
|
+
LeptrisMemoryPool* pool);
|
|
1048
|
+
|
|
1049
|
+
/* Create namespace structure using pool allocation (recommended for parsing)
|
|
1050
|
+
* Namespace and strings are automatically freed when pool is destroyed.
|
|
1051
|
+
* This supports multiple documents being parsed simultaneously. */
|
|
1052
|
+
struct leptris_namespace* leptris_namespace_new_pooled(
|
|
1053
|
+
const char* prefix,
|
|
1054
|
+
const char* uri,
|
|
1055
|
+
LeptrisMemoryPool* pool);
|
|
1056
|
+
|
|
1057
|
+
/* Lookup namespace URI by prefix */
|
|
1058
|
+
const char* leptris_element_lookup_namespace(LeptrisElement elem,
|
|
1059
|
+
const char* prefix);
|
|
1060
|
+
|
|
1061
|
+
/* Children manipulation */
|
|
1062
|
+
void leptris_element_append_child_internal(LeptrisElement elem, LeptrisNode* child);
|
|
1063
|
+
void leptris_element_append_child_internal_doc(LeptrisElement elem, LeptrisNode* child,
|
|
1064
|
+
struct leptris_document* doc);
|
|
1065
|
+
void leptris_element_prepend_child_internal(LeptrisElement elem, LeptrisNode* child);
|
|
1066
|
+
|
|
1067
|
+
/* Bulk allocation for subtree copy (10-15% faster for large subtrees) */
|
|
1068
|
+
LeptrisElement leptris_element_append_copy_bulk(LeptrisElement parent, LeptrisElement source);
|
|
1069
|
+
|
|
1070
|
+
/* Text content extraction (concatenates all text nodes) */
|
|
1071
|
+
char* leptris_element_get_text_content(LeptrisElement elem);
|
|
1072
|
+
|
|
1073
|
+
/* Document tree operations */
|
|
1074
|
+
void leptris_element_set_document_tree(LeptrisElement elem, struct leptris_document* doc);
|
|
1075
|
+
|
|
1076
|
+
/* ============================================================================
|
|
1077
|
+
* Subtree Analysis (for bulk allocation planning)
|
|
1078
|
+
* ============================================================================ */
|
|
1079
|
+
|
|
1080
|
+
/* Structure to hold subtree statistics for bulk allocation */
|
|
1081
|
+
typedef struct leptris_subtree_stats {
|
|
1082
|
+
uint32_t element_count; /* Total elements in subtree */
|
|
1083
|
+
uint32_t attribute_count; /* Total attributes in subtree */
|
|
1084
|
+
uint32_t text_count; /* Total text nodes in subtree */
|
|
1085
|
+
uint32_t comment_count; /* Total comment nodes in subtree */
|
|
1086
|
+
uint32_t cdata_count; /* Total CDATA sections in subtree */
|
|
1087
|
+
uint32_t pi_count; /* Total PIs in subtree */
|
|
1088
|
+
} LeptrisSubtreeStats;
|
|
1089
|
+
|
|
1090
|
+
/* Count all nodes in subtree (for bulk allocation planning)
|
|
1091
|
+
* Recursively traverses element tree and counts all nodes by type.
|
|
1092
|
+
* Used to pre-calculate allocation size for bulk operations.
|
|
1093
|
+
*
|
|
1094
|
+
* @param elem Root element to count
|
|
1095
|
+
* @param stats Output structure to fill with counts
|
|
1096
|
+
*/
|
|
1097
|
+
void leptris_element_count_subtree(LeptrisElement elem, LeptrisSubtreeStats* stats);
|
|
1098
|
+
|
|
1099
|
+
/* ============================================================================
|
|
1100
|
+
* Casting Helpers
|
|
1101
|
+
* ============================================================================ */
|
|
1102
|
+
|
|
1103
|
+
#define LEPTRIS_NODE_AS_ELEMENT(node) \
|
|
1104
|
+
(LEPTRIS_NODE_IS_ELEMENT(node) ? (LeptrisElement)(node) : NULL)
|
|
1105
|
+
|
|
1106
|
+
#define LEPTRIS_ELEMENT_AS_NODE(elem) \
|
|
1107
|
+
((LeptrisNode*)(elem))
|
|
1108
|
+
|
|
1109
|
+
#endif /* LEPTRIS_DOM_ELEMENT_H */
|