react-native-nitro-xlsx 0.2.5 → 0.2.6
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.
- package/NitroXlsx.podspec +26 -27
- package/Package.swift +31 -10
- package/README.md +1 -1
- package/android/CMakeLists.txt +20 -27
- package/package.json +2 -2
- package/scripts/run-cpp-tests.sh +1 -1
- package/thirdparty/OpenXLSX/.clang-format +118 -0
- package/thirdparty/OpenXLSX/.clang-tidy +28 -0
- package/thirdparty/OpenXLSX/.gitignore +130 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
- package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
- package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
- package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
- package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
- package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
- package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
- package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
- package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
- package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
- package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
- package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
- package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
- package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
- package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
- package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
- package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
- package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
- package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
- package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
- package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
- package/thirdparty/OpenXLSX/LICENSE.md +29 -0
- package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
- package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
- package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
- package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
- package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
- package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
- package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
- package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
- package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
- package/thirdparty/OpenXLSX/README.md +1279 -0
- package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
- package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
- package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
- package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
- package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
- package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
- package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
- package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
- package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
- package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
- package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
- package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
- package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
- package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
- package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
- package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
- package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
- package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
- package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
- package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
- package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
- package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
- package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
- package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
- package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
- package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
- package/thirdparty/OpenXLSX/vcpkg.json +24 -0
- package/thirdparty/README.md +42 -0
- package/thirdparty/miniz/.clang-format +47 -0
- package/thirdparty/miniz/.travis.yml +2 -0
- package/thirdparty/miniz/CMakeLists.txt +333 -0
- package/thirdparty/miniz/CMakePresets.json +31 -0
- package/thirdparty/miniz/ChangeLog.md +272 -0
- package/thirdparty/miniz/Config.cmake.in +1 -0
- package/thirdparty/miniz/LICENSE +22 -0
- package/thirdparty/miniz/amalgamate.sh +57 -0
- package/thirdparty/miniz/examples/example1.c +105 -0
- package/thirdparty/miniz/examples/example2.c +164 -0
- package/thirdparty/miniz/examples/example3.c +269 -0
- package/thirdparty/miniz/examples/example4.c +102 -0
- package/thirdparty/miniz/examples/example5.c +327 -0
- package/thirdparty/miniz/examples/example6.c +189 -0
- package/thirdparty/miniz/meson.build +21 -0
- package/thirdparty/miniz/miniz.c +646 -0
- package/thirdparty/miniz/miniz.h +615 -0
- package/thirdparty/miniz/miniz.pc.in +13 -0
- package/thirdparty/miniz/miniz_common.h +89 -0
- package/thirdparty/miniz/miniz_export.h +20 -0
- package/thirdparty/miniz/miniz_tdef.c +1602 -0
- package/thirdparty/miniz/miniz_tdef.h +199 -0
- package/thirdparty/miniz/miniz_tinfl.c +778 -0
- package/thirdparty/miniz/miniz_tinfl.h +150 -0
- package/thirdparty/miniz/miniz_zip.c +4895 -0
- package/thirdparty/miniz/miniz_zip.h +454 -0
- package/thirdparty/miniz/readme.md +46 -0
- package/thirdparty/miniz/test.sh +36 -0
- package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
- package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
- package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
- package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
- package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
- package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
- package/thirdparty/miniz/tests/fuzz_main.c +55 -0
- package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
- package/thirdparty/miniz/tests/main.cpp +185 -0
- package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
- package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
- package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
- package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
- package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
- package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
- package/thirdparty/miniz/tests/timer.cpp +152 -0
- package/thirdparty/miniz/tests/timer.h +40 -0
- package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
- package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
- package/thirdparty/miniz/tests/zip.dict +9 -0
- package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
- package/thirdparty/pugixml/.codecov.yml +7 -0
- package/thirdparty/pugixml/.gitattributes +1 -0
- package/thirdparty/pugixml/CMakeLists.txt +330 -0
- package/thirdparty/pugixml/LICENSE.md +24 -0
- package/thirdparty/pugixml/Makefile +98 -0
- package/thirdparty/pugixml/README.md +81 -0
- package/thirdparty/pugixml/SECURITY.md +9 -0
- package/thirdparty/pugixml/appveyor.yml +50 -0
- package/thirdparty/pugixml/docs/config.adoc +7 -0
- package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
- package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
- package/thirdparty/pugixml/docs/manual.adoc +3326 -0
- package/thirdparty/pugixml/docs/manual.html +6395 -0
- package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
- package/thirdparty/pugixml/docs/quickstart.html +1107 -0
- package/thirdparty/pugixml/docs/samples/character.xml +8 -0
- package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
- package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
- package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
- package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
- package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
- package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
- package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
- package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
- package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
- package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
- package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
- package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
- package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
- package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
- package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
- package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
- package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
- package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
- package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
- package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
- package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
- package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
- package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
- package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
- package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
- package/thirdparty/pugixml/readme.txt +50 -0
- package/thirdparty/pugixml/scripts/archive.py +54 -0
- package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
- package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
- package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
- package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
- package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
- package/thirdparty/pugixml/scripts/premake4.lua +92 -0
- package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
- package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
- package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
- package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
- package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
- package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
- package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
- package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
- package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
- package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
- package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
- package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
- package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
- package/thirdparty/pugixml/tests/allocator.cpp +175 -0
- package/thirdparty/pugixml/tests/allocator.hpp +10 -0
- package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
- package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
- package/thirdparty/pugixml/tests/data/empty.xml +0 -0
- package/thirdparty/pugixml/tests/data/large.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
- package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
- package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
- package/thirdparty/pugixml/tests/data/small.xml +1 -0
- package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
- package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
- package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
- package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
- package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
- package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
- package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
- package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
- package/thirdparty/pugixml/tests/helpers.hpp +114 -0
- package/thirdparty/pugixml/tests/main.cpp +218 -0
- package/thirdparty/pugixml/tests/test.cpp +220 -0
- package/thirdparty/pugixml/tests/test.hpp +175 -0
- package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
- package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
- package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
- package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
- package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
- package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
- package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
- package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
- package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
- package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
- package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
- package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
- package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
- package/thirdparty/pugixml/tests/test_version.cpp +5 -0
- package/thirdparty/pugixml/tests/test_write.cpp +757 -0
- package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
- package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
- package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
- package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
- package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
- package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
- package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
- package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
- package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
- package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
- package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
- package/scripts/prepare-openxlsx.js +0 -126
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLXMLPARSER_HPP
|
|
47
|
+
#define OPENXLSX_XLXMLPARSER_HPP
|
|
48
|
+
|
|
49
|
+
#include <memory> // shared_ptr
|
|
50
|
+
|
|
51
|
+
// ===== pugixml header needed for pugi::impl::xml_memory_page_type_mask, pugi::xml_node_type, pugi::char_t, pugi::node_element, pugi::xml_node, pugi::xml_attribute, pugi::xml_document
|
|
52
|
+
#include <pugixml.hpp> // include public pugixml header, wherever it may be in the include paths
|
|
53
|
+
#include "XLException.hpp"
|
|
54
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
55
|
+
|
|
56
|
+
namespace { // anonymous namespace to define constants / functions that shall not be exported from this module
|
|
57
|
+
constexpr const int XLMaxNamespacedNameLen = 100;
|
|
58
|
+
} // anonymous namespace
|
|
59
|
+
|
|
60
|
+
namespace OpenXLSX
|
|
61
|
+
{
|
|
62
|
+
# define ENABLE_XML_NAMESPACES 1 // disable this line to control behavior via compiler flag
|
|
63
|
+
# define NO_MULTITHREADING_SAFETY 1 // if this is defined, the function namespaced_name_char will be used for XML namespace support,
|
|
64
|
+
// // using a static character array for improved performance when multithreading conflicts are not a risk
|
|
65
|
+
|
|
66
|
+
# ifdef ENABLE_XML_NAMESPACES
|
|
67
|
+
// ===== Macro for NAMESPACED_NAME when node names might need to be prefixed with the current node's namespace
|
|
68
|
+
# ifdef NO_MULTITHREADING_SAFETY
|
|
69
|
+
# define NAMESPACED_NAME(name_, force_ns_) namespaced_name_char(name_, force_ns_)
|
|
70
|
+
# else
|
|
71
|
+
# define NAMESPACED_NAME(name_, force_ns_) namespaced_name_shared_ptr(name_, force_ns_).get()
|
|
72
|
+
# endif
|
|
73
|
+
# else
|
|
74
|
+
// ===== Optimized version when no namespace support is desired - ignores force_ns_ setting
|
|
75
|
+
# define NAMESPACED_NAME(name_, force_ns_) name_
|
|
76
|
+
# endif
|
|
77
|
+
|
|
78
|
+
constexpr const bool XLForceNamespace = true;
|
|
79
|
+
/**
|
|
80
|
+
* With namespace support: where OpenXLSX already addresses nodes by their namespace, doubling the namespace in a node name
|
|
81
|
+
* upon node create can be avoided by passing the optional parameter XLForceNamespace - this will use the node name passed to the
|
|
82
|
+
* insertion function "as-is".
|
|
83
|
+
* Affected XMLNode methods: ::set_name, ::append_child, ::prepend_child, ::insert_child_after, ::insert_child_before
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
extern bool NO_XML_NS; // defined in XLXmlParser.cpp - default: no XML namespaces
|
|
87
|
+
/**
|
|
88
|
+
* @brief Set NO_XML_NS to false
|
|
89
|
+
* @return true if PUGI_AUGMENTED is defined (success), false if PUGI_AUGMENTED is not in use (function would be pointless)
|
|
90
|
+
* @note CAUTION: this setting should be established before any other OpenXLSX function is used
|
|
91
|
+
*/
|
|
92
|
+
bool enable_xml_namespaces();
|
|
93
|
+
/**
|
|
94
|
+
* @brief Set NO_XML_NS to true
|
|
95
|
+
* @return true if PUGI_AUGMENTED is defined (success), false if PUGI_AUGMENTED is not in use (function would be pointless)
|
|
96
|
+
* @note CAUTION: this setting should be established before any other OpenXLSX function is used
|
|
97
|
+
*/
|
|
98
|
+
bool disable_xml_namespaces();
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
// ===== 2025-07-14: moved forward declarations to XLXmlParserForwardDeclarations.hpp =====
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
// ===== Custom OpenXLSX_xml_node to add functionality to pugi::xml_node
|
|
105
|
+
class OpenXLSX_xml_node : public pugi::xml_node {
|
|
106
|
+
public:
|
|
107
|
+
/**
|
|
108
|
+
* @brief Default constructor. Constructs a null object.
|
|
109
|
+
*/
|
|
110
|
+
OpenXLSX_xml_node() : pugi::xml_node(), name_begin(0) {}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @brief Inherit all constructors with parameters from pugi::xml_node
|
|
114
|
+
*/
|
|
115
|
+
template<class base>
|
|
116
|
+
// explicit OpenXLSX_xml_node(base b) : pugi::xml_node(b), name_begin(0) // TBD on explicit keyword
|
|
117
|
+
OpenXLSX_xml_node(base b) : pugi::xml_node(b), name_begin(0)
|
|
118
|
+
{
|
|
119
|
+
if (NO_XML_NS) return;
|
|
120
|
+
const char *name = xml_node::name();
|
|
121
|
+
int pos = 0;
|
|
122
|
+
while (name[pos] && name[pos] != ':') ++pos; // find name delimiter
|
|
123
|
+
if (name[pos] == ':') name_begin = pos + 1; // if delimiter was found: update name_begin to point behind that position
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @brief Strip any namespace from name_
|
|
128
|
+
* @param name_ A node name which may be prefixed with any namespace like so "namespace:nodename"
|
|
129
|
+
* @return The name_ stripped of a namespace prefix
|
|
130
|
+
*/
|
|
131
|
+
const pugi::char_t* name_without_namespace(const pugi::char_t* name_) const;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @brief add this node's namespace to name_
|
|
135
|
+
* @param name_ a node name which shall be prefixed with this node's current namespace
|
|
136
|
+
* @param force_ns if true, will return name_ unmodified
|
|
137
|
+
* @return this node's current namespace + ":" + name_ as a const pugi::char_t *
|
|
138
|
+
*/
|
|
139
|
+
const pugi::char_t* namespaced_name_char(const pugi::char_t* name_, bool force_ns) const;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @brief add this node's namespace to name_
|
|
143
|
+
* @param name_ a node name which shall be prefixed with this node's current namespace
|
|
144
|
+
* @param force_ns if true, will return name_ unmodified
|
|
145
|
+
* @return this node's current namespace + ":" + name_ as a shared_ptr to pugi::char_t
|
|
146
|
+
*/
|
|
147
|
+
std::shared_ptr<pugi::char_t> namespaced_name_shared_ptr(const pugi::char_t* name_, bool force_ns) const;
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
// ===== BEGIN: Wrappers for xml_node member functions to ensure OpenXLSX_xml_node return values
|
|
151
|
+
// and overrides for xml_node member functions to support ignoring the node namespace
|
|
152
|
+
// ===== CAUTION: this section might be incomplete, only functions actually used by OpenXLSX to date have been checked
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @brief get node name while stripping namespace, if so configured (name_begin > 0)
|
|
156
|
+
* @return the node name without a namespace
|
|
157
|
+
*/
|
|
158
|
+
const pugi::char_t* name() const { return &xml_node::name()[name_begin]; }
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @brief get actual node name from pugi::xml_node::name, including namespace, if any
|
|
162
|
+
* @return the raw node name
|
|
163
|
+
*/
|
|
164
|
+
const pugi::char_t* raw_name() const { return xml_node::name(); }
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @brief for all functions returning xml_node: invoke base class function, but with a return type of XMLNode (OpenXLSX_xml_node)
|
|
168
|
+
*/
|
|
169
|
+
XMLNode parent() { return pugi::xml_node::parent(); }
|
|
170
|
+
template <typename Predicate> XMLNode find_child(Predicate pred) const { return pugi::xml_node::find_child(pred); }
|
|
171
|
+
XMLNode child(const pugi::char_t* name_) const { return xml_node::child(NAMESPACED_NAME(name_, false)); }
|
|
172
|
+
XMLNode next_sibling(const pugi::char_t* name_) const { return xml_node::next_sibling(NAMESPACED_NAME(name_, false)); }
|
|
173
|
+
XMLNode next_sibling() const { return xml_node::next_sibling(); }
|
|
174
|
+
XMLNode previous_sibling(const pugi::char_t* name_) const { return xml_node::previous_sibling(NAMESPACED_NAME(name_, false)); }
|
|
175
|
+
XMLNode previous_sibling() const { return xml_node::previous_sibling(); }
|
|
176
|
+
const pugi::char_t* child_value() const { return xml_node::child_value(); }
|
|
177
|
+
const pugi::char_t* child_value(const pugi::char_t* name_) const { return xml_node::child_value(NAMESPACED_NAME(name_, false)); }
|
|
178
|
+
bool set_name(const pugi::char_t* rhs, bool force_ns = false) { return xml_node::set_name(NAMESPACED_NAME(rhs, force_ns)); }
|
|
179
|
+
bool set_name(const pugi::char_t* rhs, size_t size, bool force_ns = false) { return xml_node::set_name(NAMESPACED_NAME(rhs, force_ns), size + name_begin); }
|
|
180
|
+
XMLNode append_child(pugi::xml_node_type type_) { return xml_node::append_child(type_); }
|
|
181
|
+
XMLNode prepend_child(pugi::xml_node_type type_) { return xml_node::prepend_child(type_); }
|
|
182
|
+
XMLNode append_child(const pugi::char_t* name_, bool force_ns = false) { return xml_node::append_child(NAMESPACED_NAME(name_, force_ns)); }
|
|
183
|
+
XMLNode prepend_child(const pugi::char_t* name_, bool force_ns = false) { return xml_node::prepend_child(NAMESPACED_NAME(name_, force_ns)); }
|
|
184
|
+
XMLNode insert_child_after(pugi::xml_node_type type_, const xml_node& node) { return xml_node::insert_child_after(type_, node); }
|
|
185
|
+
XMLNode insert_child_before(pugi::xml_node_type type_, const xml_node& node) { return xml_node::insert_child_before(type_, node); }
|
|
186
|
+
XMLNode insert_child_after(const pugi::char_t* name_, const xml_node& node, bool force_ns = false)
|
|
187
|
+
{ return xml_node::insert_child_after(NAMESPACED_NAME(name_, force_ns), node); }
|
|
188
|
+
XMLNode insert_child_before(const pugi::char_t* name_, const xml_node& node, bool force_ns = false)
|
|
189
|
+
{ return xml_node::insert_child_before(NAMESPACED_NAME(name_, force_ns), node); }
|
|
190
|
+
bool remove_child(const pugi::char_t* name_) { return xml_node::remove_child(NAMESPACED_NAME(name_, false)); }
|
|
191
|
+
bool remove_child(const xml_node& n) { return xml_node::remove_child(n); }
|
|
192
|
+
XMLNode find_child_by_attribute(const pugi::char_t* name_, const pugi::char_t* attr_name, const pugi::char_t* attr_value) const
|
|
193
|
+
{ return xml_node::find_child_by_attribute(NAMESPACED_NAME(name_, false), attr_name, attr_value); }
|
|
194
|
+
XMLNode find_child_by_attribute(const pugi::char_t* attr_name, const pugi::char_t* attr_value) const
|
|
195
|
+
{ return xml_node::find_child_by_attribute(attr_name, attr_value); }
|
|
196
|
+
// DISCLAIMER: unused by OpenXLSX, but theoretically impacted by xml namespaces:
|
|
197
|
+
// PUGI_IMPL_FN xml_node xml_node::first_element_by_path(const pugi::char_t* path_, pugi::char_t delimiter) const
|
|
198
|
+
// ===== END: Wrappers for xml_node member functions
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* @brief get first node child that matches type
|
|
202
|
+
* @param type_ the pugi::xml_node_type to match
|
|
203
|
+
* @return a valid child matching the node type or an empty XMLNode
|
|
204
|
+
*/
|
|
205
|
+
XMLNode first_child_of_type(pugi::xml_node_type type_ = pugi::node_element) const;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* @brief get last node child that matches type
|
|
209
|
+
* @param type_ the pugi::xml_node_type to match
|
|
210
|
+
* @return a valid child matching the node type or an empty XMLNode
|
|
211
|
+
*/
|
|
212
|
+
XMLNode last_child_of_type(pugi::xml_node_type type_ = pugi::node_element) const;
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* @brief count node children that match type
|
|
216
|
+
* @param type_ the pugi::xml_node_type to match
|
|
217
|
+
* @return the amount of node children matching type
|
|
218
|
+
*/
|
|
219
|
+
size_t child_count_of_type(pugi::xml_node_type type_ = pugi::node_element) const;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @brief get next node sibling that matches type
|
|
223
|
+
* @param type_ the pugi::xml_node_type to match
|
|
224
|
+
* @return a valid sibling matching the node type or an empty XMLNode
|
|
225
|
+
*/
|
|
226
|
+
XMLNode next_sibling_of_type(pugi::xml_node_type type_ = pugi::node_element) const;
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @brief get previous node sibling that matches type
|
|
230
|
+
* @param type_ the pugi::xml_node_type to match
|
|
231
|
+
* @return a valid sibling matching the node type or an empty XMLNode
|
|
232
|
+
*/
|
|
233
|
+
XMLNode previous_sibling_of_type(pugi::xml_node_type type_ = pugi::node_element) const;
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @brief get next node sibling that matches name_ and type
|
|
237
|
+
* @param name_ the xml_node::name() to match
|
|
238
|
+
* @param type_ the pugi::xml_node_type to match
|
|
239
|
+
* @return a valid sibling matching the node type or an empty XMLNode
|
|
240
|
+
*/
|
|
241
|
+
XMLNode next_sibling_of_type(const pugi::char_t* name_, pugi::xml_node_type type_ = pugi::node_element) const;
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* @brief get previous node sibling that matches name_ and type
|
|
245
|
+
* @param name_ the xml_node::name() to match
|
|
246
|
+
* @param type_ the pugi::xml_node_type to match
|
|
247
|
+
* @return a valid sibling matching the node type or an empty XMLNode
|
|
248
|
+
*/
|
|
249
|
+
XMLNode previous_sibling_of_type(const pugi::char_t* name_, pugi::xml_node_type type_ = pugi::node_element) const;
|
|
250
|
+
|
|
251
|
+
private:
|
|
252
|
+
int name_begin; // nameBegin holds the position in xml_node::name() where the actual node name begins - 0 for non-namespaced nodes
|
|
253
|
+
// for nodes with a namespace: the position following namespace + delimiter colon, e.g. "x:c" -> nameBegin = 2
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
// ===== Custom OpenXLSX_xml_document to override relevant pugi::xml_document member functions with OpenXLSX_xml_node return value
|
|
257
|
+
class OpenXLSX_xml_document : public pugi::xml_document {
|
|
258
|
+
public:
|
|
259
|
+
/**
|
|
260
|
+
* @brief Default constructor. Constructs a null object.
|
|
261
|
+
*/
|
|
262
|
+
OpenXLSX_xml_document() : pugi::xml_document() {}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* @brief Inherit all constructors with parameters from pugi::xml_document
|
|
266
|
+
*/
|
|
267
|
+
template<class base>
|
|
268
|
+
// explicit OpenXLSX_xml_document(base b) : xml_document(b) // TBD
|
|
269
|
+
OpenXLSX_xml_document(base b) : pugi::xml_document(b)
|
|
270
|
+
{}
|
|
271
|
+
|
|
272
|
+
// ===== BEGIN: Wrappers for xml_document member functions to ensure OpenXLSX_xml_node return values
|
|
273
|
+
// ===== CAUTION: this section is incomplete, only implementing those functions actually used by OpenXLSX to date
|
|
274
|
+
/**
|
|
275
|
+
* @brief for all functions: invoke the base class function, but with a return type of OpenXLSX_xml_node
|
|
276
|
+
*/
|
|
277
|
+
XMLNode document_element() const { return pugi::xml_document::document_element(); }
|
|
278
|
+
// ===== END: Wrappers for xml_document member functions
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
} // namespace OpenXLSX
|
|
282
|
+
#endif // OPENXLSX_XLXMLPARSER_HPP
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLXMLPARSER_FORWARD_DECLARATIONS_HPP
|
|
47
|
+
#define OPENXLSX_XLXMLPARSER_FORWARD_DECLARATIONS_HPP
|
|
48
|
+
|
|
49
|
+
// disable this line to use original (non-augmented) pugixml - as of 2024-07-29 this is no longer a realistic option
|
|
50
|
+
#define PUGI_AUGMENTED
|
|
51
|
+
|
|
52
|
+
namespace pugi {
|
|
53
|
+
# ifdef PUGI_AUGMENTED
|
|
54
|
+
class xml_attribute;
|
|
55
|
+
# else
|
|
56
|
+
class xml_node;
|
|
57
|
+
class xml_attribute;
|
|
58
|
+
class xml_document;
|
|
59
|
+
# endif
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
namespace OpenXLSX {
|
|
63
|
+
// ===== Functions to enable/disable support for documents that use XML namespaces for OOXML tags
|
|
64
|
+
// Both functions return true on success, false if functionality is not supported (it is supported, so this should not happen)
|
|
65
|
+
bool enable_xml_namespaces(); // enable support for namespaces (costs performance on documents without such namespaces)
|
|
66
|
+
bool disable_xml_namespaces(); // disable support for namespaces
|
|
67
|
+
|
|
68
|
+
// ===== Using statements to switch between pugixml and augmented pugixml implementation
|
|
69
|
+
# ifdef PUGI_AUGMENTED
|
|
70
|
+
// ===== Forward declarations for using statements below
|
|
71
|
+
class OpenXLSX_xml_node;
|
|
72
|
+
class OpenXLSX_xml_document;
|
|
73
|
+
|
|
74
|
+
using XMLNode = OpenXLSX_xml_node;
|
|
75
|
+
using XMLAttribute = pugi::xml_attribute;
|
|
76
|
+
using XMLDocument = OpenXLSX_xml_document;
|
|
77
|
+
# else
|
|
78
|
+
using XMLNode = pugi::xml_node;
|
|
79
|
+
using XMLAttribute = pugi::xml_attribute;
|
|
80
|
+
using XMLDocument = pugi::xml_document;
|
|
81
|
+
# endif
|
|
82
|
+
} // namespace OpenXLSX
|
|
83
|
+
|
|
84
|
+
#endif // OPENXLSX_XLXMLPARSER_FORWARD_DECLARATIONS_HPP
|
|
85
|
+
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
____ ____ ___ ____ ____ ____ ___
|
|
4
|
+
6MMMMb `MM( )M' `MM' 6MMMMb\`MM( )M'
|
|
5
|
+
8P Y8 `MM. d' MM 6M' ` `MM. d'
|
|
6
|
+
6M Mb __ ____ ____ ___ __ `MM. d' MM MM `MM. d'
|
|
7
|
+
MM MM `M6MMMMb 6MMMMb `MM 6MMb `MM. d' MM YM. `MM. d'
|
|
8
|
+
MM MM MM' `Mb 6M' `Mb MMM9 `Mb `MMd MM YMMMMb `MMd
|
|
9
|
+
MM MM MM MM MM MM MM' MM dMM. MM `Mb dMM.
|
|
10
|
+
MM MM MM MM MMMMMMMM MM MM d'`MM. MM MM d'`MM.
|
|
11
|
+
YM M9 MM MM MM MM MM d' `MM. MM MM d' `MM.
|
|
12
|
+
8b d8 MM. ,M9 YM d9 MM MM d' `MM. MM / L ,M9 d' `MM.
|
|
13
|
+
YMMMM9 MMYMMM9 YMMMM9 _MM_ _MM_M(_ _)MM_ _MMMMMMM MYMMMM9 _M(_ _)MM_
|
|
14
|
+
MM
|
|
15
|
+
MM
|
|
16
|
+
_MM_
|
|
17
|
+
|
|
18
|
+
Copyright (c) 2018, Kenneth Troldal Balslev
|
|
19
|
+
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
- Redistributions of source code must retain the above copyright
|
|
25
|
+
notice, this list of conditions and the following disclaimer.
|
|
26
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
27
|
+
notice, this list of conditions and the following disclaimer in the
|
|
28
|
+
documentation and/or other materials provided with the distribution.
|
|
29
|
+
- Neither the name of the author nor the
|
|
30
|
+
names of any contributors may be used to endorse or promote products
|
|
31
|
+
derived from this software without specific prior written permission.
|
|
32
|
+
|
|
33
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
34
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
35
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
36
|
+
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
37
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
38
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
39
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
40
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
41
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
42
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
43
|
+
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
#ifndef OPENXLSX_XLZIPARCHIVE_HPP
|
|
47
|
+
#define OPENXLSX_XLZIPARCHIVE_HPP
|
|
48
|
+
|
|
49
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
50
|
+
# pragma warning(push)
|
|
51
|
+
# pragma warning(disable : 4251)
|
|
52
|
+
# pragma warning(disable : 4275)
|
|
53
|
+
#endif // _MSC_VER
|
|
54
|
+
|
|
55
|
+
// ===== External Includes ===== //
|
|
56
|
+
#include <memory> // std::shared_ptr
|
|
57
|
+
#include <cstddef> // size_t
|
|
58
|
+
#include <type_traits> // std::make_signed_t
|
|
59
|
+
|
|
60
|
+
// ===== OpenXLSX Includes ===== //
|
|
61
|
+
#include "OpenXLSX-Exports.hpp"
|
|
62
|
+
|
|
63
|
+
#ifdef USE_LIBZIP
|
|
64
|
+
namespace LibZip {
|
|
65
|
+
class ZipArchive;
|
|
66
|
+
} // namespace LibZip
|
|
67
|
+
#define XLZipImplementation LibZip::ZipArchive
|
|
68
|
+
#else
|
|
69
|
+
namespace Zippy
|
|
70
|
+
{
|
|
71
|
+
class ZipArchive;
|
|
72
|
+
} // namespace Zippy
|
|
73
|
+
#define XLZipImplementation Zippy::ZipArchive
|
|
74
|
+
#endif
|
|
75
|
+
|
|
76
|
+
// ===== portable ssize_t definition ===== //
|
|
77
|
+
using ssize_t = std::make_signed_t< std::size_t >;
|
|
78
|
+
|
|
79
|
+
namespace OpenXLSX
|
|
80
|
+
{
|
|
81
|
+
/**
|
|
82
|
+
* @brief provide the user with the name of the zip library in use
|
|
83
|
+
*/
|
|
84
|
+
OPENXLSX_EXPORT const char *ZipLibraryName();
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @brief provide the user with the version string of the zip library in use
|
|
88
|
+
*/
|
|
89
|
+
OPENXLSX_EXPORT const char *ZipLibraryVersion();
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @brief
|
|
93
|
+
*/
|
|
94
|
+
class OPENXLSX_EXPORT XLZipArchive
|
|
95
|
+
{
|
|
96
|
+
public:
|
|
97
|
+
/**
|
|
98
|
+
* @brief
|
|
99
|
+
*/
|
|
100
|
+
XLZipArchive();
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @brief
|
|
104
|
+
* @param other
|
|
105
|
+
*/
|
|
106
|
+
XLZipArchive(const XLZipArchive& other);
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @brief
|
|
110
|
+
* @param other
|
|
111
|
+
*/
|
|
112
|
+
XLZipArchive(XLZipArchive&& other) noexcept;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @brief
|
|
116
|
+
*/
|
|
117
|
+
~XLZipArchive();
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @brief copy assignment shall be disabled until a use case is found
|
|
121
|
+
* @param other
|
|
122
|
+
* @return
|
|
123
|
+
*/
|
|
124
|
+
XLZipArchive& operator=(const XLZipArchive& other) = delete;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @brief
|
|
128
|
+
* @param other
|
|
129
|
+
* @return
|
|
130
|
+
*/
|
|
131
|
+
XLZipArchive& operator=(XLZipArchive&& other) noexcept;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @brief check if zippy is in use (or ziplib)
|
|
135
|
+
* @param
|
|
136
|
+
* @return true if zippy is used for the zip implementation, otherwise false
|
|
137
|
+
*/
|
|
138
|
+
bool usesZippy();
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @brief
|
|
142
|
+
* @return
|
|
143
|
+
*/
|
|
144
|
+
explicit operator bool() const;
|
|
145
|
+
|
|
146
|
+
bool isValid() const;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @brief
|
|
150
|
+
* @return
|
|
151
|
+
*/
|
|
152
|
+
bool isOpen() const;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @brief
|
|
156
|
+
* @param fileName
|
|
157
|
+
*/
|
|
158
|
+
void open(const std::string& fileName);
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @brief
|
|
162
|
+
*/
|
|
163
|
+
void close();
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @brief make archive updates (from addEntry) available to calls via getEntry
|
|
167
|
+
*/
|
|
168
|
+
void commitChanges();
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @brief
|
|
172
|
+
* @param path
|
|
173
|
+
*/
|
|
174
|
+
void save(const std::string& path = "");
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* @brief
|
|
178
|
+
* @param name
|
|
179
|
+
* @param data
|
|
180
|
+
*/
|
|
181
|
+
void addEntry(const std::string& name, const std::string& data);
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @brief like addEntry, but call commitChanges() afterwards
|
|
185
|
+
* @param name
|
|
186
|
+
* @param data
|
|
187
|
+
*/
|
|
188
|
+
void addEntryAndCommit(const std::string& name, const std::string& data);
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @brief
|
|
192
|
+
* @param entryName
|
|
193
|
+
*/
|
|
194
|
+
void deleteEntry(const std::string& entryName);
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @brief
|
|
198
|
+
* @param name
|
|
199
|
+
* @return
|
|
200
|
+
*/
|
|
201
|
+
std::string getEntry(const std::string& name) const;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @brief
|
|
205
|
+
* @param entryName
|
|
206
|
+
* @return
|
|
207
|
+
*/
|
|
208
|
+
bool hasEntry(const std::string& entryName) const;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @brief get the amount of entries in the archive
|
|
212
|
+
* @return for libzip: amount of entries in archive, 0 for zippy
|
|
213
|
+
*/
|
|
214
|
+
ssize_t entryCount() const;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* @brief get the name of an archive entry by its index
|
|
218
|
+
* @param index the archive entry whose name to fetch
|
|
219
|
+
* @return for libzip: name of the archive entry (full path), "" for zippy
|
|
220
|
+
*/
|
|
221
|
+
std::string entryName( int index ) const;
|
|
222
|
+
|
|
223
|
+
private:
|
|
224
|
+
std::shared_ptr<XLZipImplementation> m_archive; /**< */
|
|
225
|
+
};
|
|
226
|
+
} // namespace OpenXLSX
|
|
227
|
+
|
|
228
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
229
|
+
# pragma warning(pop)
|
|
230
|
+
#endif // _MSC_VER
|
|
231
|
+
|
|
232
|
+
#endif // OPENXLSX_XLZIPARCHIVE_HPP
|