react-native-nitro-xlsx 0.1.4 → 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 +27 -27
- package/Package.swift +35 -10
- package/README.md +220 -58
- package/android/CMakeLists.txt +24 -27
- package/android/cpp-adapter.cpp +12 -0
- package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
- package/cpp/HybridNitroXlsx.cpp +25 -179
- package/cpp/HybridNitroXlsx.hpp +2 -2
- package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
- package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
- package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
- package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
- package/cpp/HybridXlsxWorkbook.cpp +159 -196
- package/cpp/HybridXlsxWorkbook.hpp +7 -2
- package/cpp/HybridXlsxWorksheet.cpp +433 -62
- package/cpp/HybridXlsxWorksheet.hpp +73 -26
- package/cpp/XlsxCacheDir.cpp +76 -0
- package/cpp/XlsxCacheDir.hpp +27 -0
- package/cpp/XlsxError.hpp +68 -0
- package/cpp/XlsxJson.cpp +185 -0
- package/cpp/XlsxJson.hpp +36 -0
- package/ios/XlsxCacheDir.mm +60 -0
- package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
- package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
- package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
- package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
- package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
- package/package.json +3 -3
- package/scripts/run-cpp-tests.sh +14 -0
- package/src/__mocks__/react-native-nitro-modules.ts +1 -0
- package/src/__tests__/index.test.ts +76 -7
- package/src/index.ts +107 -18
- package/src/specs/NitroXlsx.nitro.ts +141 -44
- 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/ios/dummy.swift +0 -2
- package/scripts/prepare-openxlsx.js +0 -109
|
@@ -0,0 +1,283 @@
|
|
|
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_XLXMLDATA_HPP
|
|
47
|
+
#define OPENXLSX_XLXMLDATA_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>
|
|
57
|
+
#include <string>
|
|
58
|
+
|
|
59
|
+
// ===== OpenXLSX Includes ===== //
|
|
60
|
+
#include "OpenXLSX-Exports.hpp"
|
|
61
|
+
#include "XLContentTypes.hpp"
|
|
62
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
63
|
+
|
|
64
|
+
namespace OpenXLSX
|
|
65
|
+
{
|
|
66
|
+
constexpr const char * XLXmlDefaultVersion = "1.0";
|
|
67
|
+
constexpr const char * XLXmlDefaultEncoding = "UTF-8";
|
|
68
|
+
constexpr const bool XLXmlStandalone = true;
|
|
69
|
+
constexpr const bool XLXmlNotStandalone = false;
|
|
70
|
+
/**
|
|
71
|
+
* @brief The XLXmlSavingDeclaration class encapsulates the properties of an XML saving declaration,
|
|
72
|
+
* that can be used in calls to XLXmlData::getRawData to enforce specific settings
|
|
73
|
+
*/
|
|
74
|
+
class OPENXLSX_EXPORT XLXmlSavingDeclaration {
|
|
75
|
+
public:
|
|
76
|
+
// ===== PUBLIC MEMBER FUNCTIONS ===== //
|
|
77
|
+
/**
|
|
78
|
+
* @brief Default constructor
|
|
79
|
+
*/
|
|
80
|
+
XLXmlSavingDeclaration();
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @brief Nominal constructor
|
|
84
|
+
*/
|
|
85
|
+
XLXmlSavingDeclaration(std::string version, std::string encoding, bool standalone = XLXmlNotStandalone);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @brief Copy constructor
|
|
89
|
+
*/
|
|
90
|
+
XLXmlSavingDeclaration(const XLXmlSavingDeclaration& other);
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @brief Move constructor
|
|
94
|
+
*/
|
|
95
|
+
XLXmlSavingDeclaration(XLXmlSavingDeclaration&& other) noexcept;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @brief Destructor
|
|
99
|
+
*/
|
|
100
|
+
~XLXmlSavingDeclaration();
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @brief Copy assignment operator
|
|
104
|
+
* @param other the XLXmlSavingDeclaration object to be copied
|
|
105
|
+
* @return A reference to the copied-to object.
|
|
106
|
+
*/
|
|
107
|
+
XLXmlSavingDeclaration& operator=(const XLXmlSavingDeclaration& other);
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* @brief Move assignment operator
|
|
111
|
+
* @param other the XLXmlSavingDeclaration object to be moved from.
|
|
112
|
+
* @return A reference to the moved-to object.
|
|
113
|
+
*/
|
|
114
|
+
XLXmlSavingDeclaration& operator=(XLXmlSavingDeclaration&& other) noexcept;
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @brief getter functions: version, encoding, standalone
|
|
118
|
+
*/
|
|
119
|
+
std::string const & version() const { return m_version; }
|
|
120
|
+
std::string const & encoding() const { return m_encoding; }
|
|
121
|
+
bool standalone_as_bool() const { return m_standalone; }
|
|
122
|
+
std::string const standalone() const { return m_standalone ? "yes" : "no"; }
|
|
123
|
+
private:
|
|
124
|
+
// ===== PRIVATE MEMBER VARIABLES ===== //
|
|
125
|
+
std::string m_version;
|
|
126
|
+
std::string m_encoding;
|
|
127
|
+
bool m_standalone;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @brief The XLXmlData class encapsulates the properties and behaviour of the .xml files in an .xlsx file zip
|
|
132
|
+
* package. Objects of the XLXmlData type are intended to be stored centrally in an XLDocument object, from where
|
|
133
|
+
* they can be retrieved by other objects that encapsulates the behaviour of Excel elements, such as XLWorkbook
|
|
134
|
+
* and XLWorksheet.
|
|
135
|
+
*/
|
|
136
|
+
class OPENXLSX_EXPORT XLXmlData final
|
|
137
|
+
{
|
|
138
|
+
public:
|
|
139
|
+
// ===== PUBLIC MEMBER FUNCTIONS ===== //
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @brief Default constructor. All member variables are default constructed. Except for
|
|
143
|
+
* the raw XML data, none of the member variables can be modified after construction. Hence, objects created
|
|
144
|
+
* using the default constructor can only serve as null objects and targets for the move assignment operator.
|
|
145
|
+
*/
|
|
146
|
+
XLXmlData();
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @brief Constructor. This constructor creates objects with the given parameters. the xmlId and the xmlType
|
|
150
|
+
* parameters have default values. These are only useful for relationship (.rels) files and the
|
|
151
|
+
* [Content_Types].xml file located in the root directory of the zip package.
|
|
152
|
+
* @param parentDoc A pointer to the parent XLDocument object.
|
|
153
|
+
* @param xmlPath A std::string with the file path in zip package.
|
|
154
|
+
* @param xmlId A std::string with the relationship ID of the file (used in the XLRelationships class)
|
|
155
|
+
* @param xmlType The type of object the XML file represents, e.g. XLWorkbook or XLWorksheet.
|
|
156
|
+
*/
|
|
157
|
+
XLXmlData(XLDocument* parentDoc,
|
|
158
|
+
const std::string& xmlPath,
|
|
159
|
+
const std::string& xmlId = "",
|
|
160
|
+
XLContentType xmlType = XLContentType::Unknown);
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @brief Default destructor. The XLXmlData does not manage any dynamically allocated resources, so a default
|
|
164
|
+
* destructor will suffice.
|
|
165
|
+
*/
|
|
166
|
+
~XLXmlData();
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @brief check whether class is linked to a valid XML document
|
|
170
|
+
* @return true if the class should have a link to valid data
|
|
171
|
+
* @return false if accessing any other properties / methods could cause a segmentation fault
|
|
172
|
+
*/
|
|
173
|
+
bool valid() const { return m_xmlDoc != nullptr; }
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @brief Copy constructor. The m_xmlDoc data member is a XMLDocument object, which is non-copyable. Hence,
|
|
177
|
+
* the XLXmlData objects have an explicitly deleted copy constructor.
|
|
178
|
+
* @param other
|
|
179
|
+
*/
|
|
180
|
+
XLXmlData(const XLXmlData& other) = delete;
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* @brief Move constructor. All data members are trivially movable. Hence an explicitly defaulted move
|
|
184
|
+
* constructor is sufficient.
|
|
185
|
+
* @param other
|
|
186
|
+
*/
|
|
187
|
+
XLXmlData(XLXmlData&& other) noexcept;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* @brief Copy assignment operator. The m_xmlDoc data member is a XMLDocument object, which is non-copyable.
|
|
191
|
+
* Hence, the XLXmlData objects have an explicitly deleted copy assignment operator.
|
|
192
|
+
*/
|
|
193
|
+
XLXmlData& operator=(const XLXmlData& other) = delete;
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* @brief Move assignment operator. All data members are trivially movable. Hence an explicitly defaulted move
|
|
197
|
+
* constructor is sufficient.
|
|
198
|
+
* @param other the XLXmlData object to be moved from.
|
|
199
|
+
* @return A reference to the moved-to object.
|
|
200
|
+
*/
|
|
201
|
+
XLXmlData& operator=(XLXmlData&& other) noexcept;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* @brief Set the raw data for the underlying XML document. Being able to set the XML data directly is useful
|
|
205
|
+
* when creating a new file using a XML file template. E.g., when creating a new worksheet, the XML code for
|
|
206
|
+
* a minimum viable XLWorksheet object can be added using this function.
|
|
207
|
+
* @param data A std::string with the raw XML text.
|
|
208
|
+
*/
|
|
209
|
+
void setRawData(const std::string& data);
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @brief Get the raw data for the underlying XML document. This function will retrieve the raw XML text data
|
|
213
|
+
* from the underlying XMLDocument object. This will mainly be used when saving data to the .xlsx package
|
|
214
|
+
* using the save function in the XLDocument class.
|
|
215
|
+
* @param savingDeclaration @optional specify an XML saving declaration to use
|
|
216
|
+
* @return A std::string with the raw XML text data.
|
|
217
|
+
*/
|
|
218
|
+
std::string getRawData(XLXmlSavingDeclaration savingDeclaration = XLXmlSavingDeclaration{}) const;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* @brief Access the parent XLDocument object.
|
|
222
|
+
* @return A pointer to the parent XLDocument object.
|
|
223
|
+
*/
|
|
224
|
+
XLDocument* getParentDoc();
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @brief Access the parent XLDocument object.
|
|
228
|
+
* @return A const pointer to the parent XLDocument object.
|
|
229
|
+
*/
|
|
230
|
+
const XLDocument* getParentDoc() const;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @brief Retrieve the path of the XML data in the .xlsx zip archive.
|
|
234
|
+
* @return A std::string with the path.
|
|
235
|
+
*/
|
|
236
|
+
std::string getXmlPath() const;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* @brief Retrieve the relationship ID of the XML file.
|
|
240
|
+
* @return A std::string with the relationship ID.
|
|
241
|
+
*/
|
|
242
|
+
std::string getXmlID() const;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* @brief Retrieve the type represented by the XML data.
|
|
246
|
+
* @return A XLContentType getValue representing the type.
|
|
247
|
+
*/
|
|
248
|
+
XLContentType getXmlType() const;
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* @brief Access the underlying XMLDocument object.
|
|
252
|
+
* @return A pointer to the XMLDocument object.
|
|
253
|
+
*/
|
|
254
|
+
XMLDocument* getXmlDocument();
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* @brief Access the underlying XMLDocument object.
|
|
258
|
+
* @return A const pointer to the XMLDocument object.
|
|
259
|
+
*/
|
|
260
|
+
const XMLDocument* getXmlDocument() const;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* @brief Test whether there is an XML file linked to this object
|
|
264
|
+
* @return true if there is no underlying XML file, otherwise false
|
|
265
|
+
*/
|
|
266
|
+
bool empty() const;
|
|
267
|
+
|
|
268
|
+
private:
|
|
269
|
+
// ===== PRIVATE MEMBER VARIABLES ===== //
|
|
270
|
+
|
|
271
|
+
XLDocument* m_parentDoc {}; /**< A pointer to the parent XLDocument object. >*/
|
|
272
|
+
std::string m_xmlPath {}; /**< The path of the XML data in the .xlsx zip archive. >*/
|
|
273
|
+
std::string m_xmlID {}; /**< The relationship ID of the XML data. >*/
|
|
274
|
+
XLContentType m_xmlType {}; /**< The type represented by the XML data. >*/
|
|
275
|
+
mutable std::unique_ptr<XMLDocument> m_xmlDoc; /**< The underlying XMLDocument object. >*/
|
|
276
|
+
};
|
|
277
|
+
} // namespace OpenXLSX
|
|
278
|
+
|
|
279
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
280
|
+
# pragma warning(pop)
|
|
281
|
+
#endif // _MSC_VER
|
|
282
|
+
|
|
283
|
+
#endif // OPENXLSX_XLXMLDATA_HPP
|
|
@@ -0,0 +1,194 @@
|
|
|
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_XLXMLFILE_HPP
|
|
47
|
+
#define OPENXLSX_XLXMLFILE_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
|
+
// ===== OpenXLSX Includes ===== //
|
|
56
|
+
#include "OpenXLSX-Exports.hpp"
|
|
57
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
58
|
+
|
|
59
|
+
namespace OpenXLSX
|
|
60
|
+
{
|
|
61
|
+
class XLXmlData;
|
|
62
|
+
class XLDocument;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @brief The XLUnsupportedElement class provides a stub implementation that can be used as function
|
|
66
|
+
* parameter or return type for currently unsupported XML features.
|
|
67
|
+
*/
|
|
68
|
+
class OPENXLSX_EXPORT XLUnsupportedElement
|
|
69
|
+
{
|
|
70
|
+
public:
|
|
71
|
+
XLUnsupportedElement() {}
|
|
72
|
+
bool empty() const { return true; }
|
|
73
|
+
std::string summary() const { return "XLUnsupportedElement"; }
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @brief The XLXmlFile class provides an interface for derived classes to use.
|
|
78
|
+
* It functions as an ancestor to all classes which are represented by an .xml file in an .xlsx package.
|
|
79
|
+
* @warning The XLXmlFile class is not intended to be instantiated on it's own, but to provide an interface for
|
|
80
|
+
* derived classes. Also, it should not be used polymorphically. For that reason, the destructor is not declared virtual.
|
|
81
|
+
*/
|
|
82
|
+
class OPENXLSX_EXPORT XLXmlFile
|
|
83
|
+
{
|
|
84
|
+
public: // ===== PUBLIC MEMBER FUNCTIONS
|
|
85
|
+
/**
|
|
86
|
+
* @brief Default constructor.
|
|
87
|
+
*/
|
|
88
|
+
XLXmlFile();
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @brief Constructor. Creates an object based on the xmlData input.
|
|
92
|
+
* @param xmlData An XLXmlData object with the XML data to be represented by the object.
|
|
93
|
+
*/
|
|
94
|
+
explicit XLXmlFile(XLXmlData* xmlData);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @brief Copy constructor. Default implementation used.
|
|
98
|
+
* @param other The object to copy.
|
|
99
|
+
*/
|
|
100
|
+
XLXmlFile(const XLXmlFile& other);
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* @brief Move constructor. Default implementation used.
|
|
104
|
+
* @param other The object to move.
|
|
105
|
+
*/
|
|
106
|
+
XLXmlFile(XLXmlFile&& other) noexcept;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @brief Destructor. Default implementation used.
|
|
110
|
+
*/
|
|
111
|
+
~XLXmlFile();
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @brief check whether class is linked to a valid XML file
|
|
115
|
+
* @return true if the class should have a link to valid data
|
|
116
|
+
* @return false if accessing any other sheet properties / methods could cause a segmentation fault
|
|
117
|
+
* @note for example, if an XLSheet is created with a default constructor, XLSheetBase::valid() (derived from XLXmlFile) would return false
|
|
118
|
+
*/
|
|
119
|
+
bool valid() const { return m_xmlData != nullptr; }
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @brief The copy assignment operator. The default implementation has been used.
|
|
123
|
+
* @param other The object to copy.
|
|
124
|
+
* @return A reference to the new object.
|
|
125
|
+
*/
|
|
126
|
+
XLXmlFile& operator=(const XLXmlFile& other);
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @brief The move assignment operator. The default implementation has been used.
|
|
130
|
+
* @param other The object to move.
|
|
131
|
+
* @return A reference to the new object.
|
|
132
|
+
*/
|
|
133
|
+
XLXmlFile& operator=(XLXmlFile&& other) noexcept;
|
|
134
|
+
|
|
135
|
+
protected: // ===== PROTECTED MEMBER FUNCTIONS
|
|
136
|
+
/**
|
|
137
|
+
* @brief Method for getting the XML data represented by the object.
|
|
138
|
+
* @return A std::string with the XML data.
|
|
139
|
+
*/
|
|
140
|
+
std::string xmlData() const;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @brief Provide the XML data represented by the object.
|
|
144
|
+
* @param xmlData A std::string with the XML data.
|
|
145
|
+
*/
|
|
146
|
+
void setXmlData(const std::string& xmlData);
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* @brief This function returns the relationship ID (the ID used in the XLRelationships objects) for the object.
|
|
150
|
+
* @return A std::string with the ID. Not all spreadsheet objects may have a relationship ID. In those cases an empty string is
|
|
151
|
+
* returned.
|
|
152
|
+
*/
|
|
153
|
+
std::string relationshipID() const;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* @brief This function provides access to the parent XLDocument object.
|
|
157
|
+
* @return A reference to the parent XLDocument object.
|
|
158
|
+
*/
|
|
159
|
+
XLDocument& parentDoc();
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @brief This function provides access to the parent XLDocument object.
|
|
163
|
+
* @return A const reference to the parent XLDocument object.
|
|
164
|
+
*/
|
|
165
|
+
const XLDocument& parentDoc() const;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @brief This function provides access to the underlying XMLDocument object.
|
|
169
|
+
* @return A reference to the XMLDocument object.
|
|
170
|
+
*/
|
|
171
|
+
XMLDocument& xmlDocument();
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* @brief This function provides access to the underlying XMLDocument object.
|
|
175
|
+
* @return A const reference to the XMLDocument object.
|
|
176
|
+
*/
|
|
177
|
+
const XMLDocument& xmlDocument() const;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @brief Retrieve the path of the XML data in the .xlsx zip archive via m_xmlData->getXmlPath
|
|
181
|
+
* @return A std::string with the path. Empty string if m_xmlData is nullptr
|
|
182
|
+
*/
|
|
183
|
+
std::string getXmlPath() const;
|
|
184
|
+
|
|
185
|
+
protected: // ===== PROTECTED MEMBER VARIABLES
|
|
186
|
+
XLXmlData* m_xmlData { nullptr }; /**< The underlying XML data object. */
|
|
187
|
+
};
|
|
188
|
+
} // namespace OpenXLSX
|
|
189
|
+
|
|
190
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
191
|
+
# pragma warning(pop)
|
|
192
|
+
#endif // _MSC_VER
|
|
193
|
+
|
|
194
|
+
#endif // OPENXLSX_XLXMLFILE_HPP
|