react-native-nitro-xlsx 0.2.5 → 0.2.7
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 +21 -9
- package/android/CMakeLists.txt +20 -27
- package/cpp/HybridNitroXlsx.cpp +25 -1
- package/cpp/HybridXlsxCellFormat.cpp +46 -146
- package/cpp/HybridXlsxCellFormat.hpp +9 -41
- package/cpp/HybridXlsxConditionalFormat.cpp +4 -1
- package/cpp/HybridXlsxConditionalFormats.cpp +5 -1
- package/cpp/HybridXlsxWorkbook.cpp +38 -8
- package/cpp/HybridXlsxWorkbook.hpp +10 -1
- package/cpp/HybridXlsxWorksheet.cpp +422 -141
- package/cpp/HybridXlsxWorksheet.hpp +4 -1
- package/cpp/XlsxCacheDir.cpp +25 -2
- package/cpp/XlsxCacheDir.hpp +3 -1
- package/cpp/XlsxCellStyle.hpp +360 -0
- package/cpp/XlsxJson.cpp +29 -8
- package/package.json +2 -2
- package/scripts/run-cpp-tests.sh +1 -1
- package/scripts/sync-openxlsx-headers.sh +34 -0
- package/src/__mocks__/react-native-nitro-modules.ts +523 -20
- package/src/__tests__/index.test.ts +124 -16
- package/src/index.ts +13 -13
- 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/IZipArchive.hpp +361 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/OpenXLSX-Exports.hpp +12 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCell.hpp +367 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellIterator.hpp +252 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellRange.hpp +223 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellReference.hpp +317 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellValue.hpp +793 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLColor.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLColumn.hpp +159 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCommandQuery.hpp +228 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLComments.hpp +270 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLConstants.hpp +18 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLContentTypes.hpp +264 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDateTime.hpp +175 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDocument.hpp +505 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDrawing.hpp +452 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLException.hpp +161 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLFormula.hpp +375 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLIterator.hpp +40 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLMergeCells.hpp +216 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLProperties.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRelationships.hpp +348 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRow.hpp +721 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRowData.hpp +488 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLSharedStrings.hpp +204 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLSheet.hpp +1640 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLStyles.hpp +2390 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLTables.hpp +132 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLWorkbook.hpp +404 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlData.hpp +283 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlFile.hpp +194 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlParser.hpp +282 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlParserForwardDeclarations.hpp +85 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLZipArchive.hpp +232 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/LibZip.hpp +447 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/OpenXLSXFileSystemTools.hpp +207 -0
- package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/Zippy.hpp +1375 -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 +46 -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,367 @@
|
|
|
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_XLCELL_HPP
|
|
47
|
+
#define OPENXLSX_XLCELL_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
|
+
#include <iostream> // std::ostream
|
|
56
|
+
#include <ostream> // std::basic_ostream
|
|
57
|
+
#include <memory>
|
|
58
|
+
|
|
59
|
+
// ===== OpenXLSX Includes ===== //
|
|
60
|
+
#include "OpenXLSX-Exports.hpp"
|
|
61
|
+
#include "XLCellReference.hpp"
|
|
62
|
+
#include "XLCellValue.hpp"
|
|
63
|
+
#include "XLFormula.hpp"
|
|
64
|
+
#include "XLSharedStrings.hpp"
|
|
65
|
+
#include "XLStyles.hpp" // XLStyleIndex
|
|
66
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
67
|
+
|
|
68
|
+
// ========== CLASS AND ENUM TYPE DEFINITIONS ========== //
|
|
69
|
+
namespace OpenXLSX
|
|
70
|
+
{
|
|
71
|
+
// ===== Flags that can be passed to XLCell::clear as parameter keep, flags can be combined with bitwise OR
|
|
72
|
+
// // Do not clear the cell's:
|
|
73
|
+
constexpr const uint32_t XLKeepCellStyle = 1; // style (attribute s)
|
|
74
|
+
constexpr const uint32_t XLKeepCellType = 2; // type (attribute t)
|
|
75
|
+
constexpr const uint32_t XLKeepCellValue = 4; // value (child node v)
|
|
76
|
+
constexpr const uint32_t XLKeepCellFormula = 8; // formula (child node f)
|
|
77
|
+
|
|
78
|
+
class XLCellRange;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @brief An implementation class encapsulating the properties and behaviours of a spreadsheet cell.
|
|
82
|
+
*/
|
|
83
|
+
class OPENXLSX_EXPORT XLCell
|
|
84
|
+
{
|
|
85
|
+
friend class XLCellIterator;
|
|
86
|
+
friend class XLCellValueProxy;
|
|
87
|
+
friend class XLRowDataIterator;
|
|
88
|
+
friend bool operator==(const XLCell& lhs, const XLCell& rhs);
|
|
89
|
+
friend bool operator!=(const XLCell& lhs, const XLCell& rhs);
|
|
90
|
+
|
|
91
|
+
public:
|
|
92
|
+
//---------- Public Member Functions ----------//
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @brief Default constructor. Constructs a null object.
|
|
96
|
+
*/
|
|
97
|
+
XLCell();
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* @brief
|
|
101
|
+
* @param cellNode
|
|
102
|
+
* @param sharedStrings
|
|
103
|
+
*/
|
|
104
|
+
XLCell(const XMLNode& cellNode, const XLSharedStrings& sharedStrings);
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @brief Copy constructor
|
|
108
|
+
* @param other The XLCell object to be copied.
|
|
109
|
+
* @note The copy constructor has been deleted, as it makes no sense to copy a cell. If the objective is to
|
|
110
|
+
* copy the getValue, create the the target object and then use the copy assignment operator.
|
|
111
|
+
*/
|
|
112
|
+
XLCell(const XLCell& other);
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @brief Move constructor
|
|
116
|
+
* @param other The XLCell object to be moved
|
|
117
|
+
* @note The move constructor has been deleted, as it makes no sense to move a cell.
|
|
118
|
+
*/
|
|
119
|
+
XLCell(XLCell&& other) noexcept;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @brief Destructor
|
|
123
|
+
* @note Using the default destructor
|
|
124
|
+
*/
|
|
125
|
+
virtual ~XLCell();
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @brief Copy assignment operator
|
|
129
|
+
* @param other The XLCell object to be copy assigned
|
|
130
|
+
* @return A reference to the new object
|
|
131
|
+
* @note Copies only the cell contents, not the pointer to parent worksheet etc.
|
|
132
|
+
*/
|
|
133
|
+
virtual XLCell& operator=(const XLCell& other);
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @brief Move assignment operator
|
|
137
|
+
* @param other The XLCell object to be move assigned
|
|
138
|
+
* @return A reference to the new object
|
|
139
|
+
* @note The move assignment constructor has been deleted, as it makes no sense to move a cell.
|
|
140
|
+
*/
|
|
141
|
+
virtual XLCell& operator=(XLCell&& other) noexcept;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* @brief Copy contents of a cell, value & formula
|
|
145
|
+
* @param other The XLCell object from which to copy
|
|
146
|
+
*/
|
|
147
|
+
void copyFrom(XLCell const& other);
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @brief test if cell object has no (valid) content
|
|
151
|
+
* @return
|
|
152
|
+
*/
|
|
153
|
+
bool empty() const;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* @brief opposite of empty()
|
|
157
|
+
* @return
|
|
158
|
+
*/
|
|
159
|
+
explicit operator bool() const;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @brief clear all cell content and attributes except for the cell reference (attribute r)
|
|
163
|
+
* @param keep do not clear cell properties whose flags are set in keep (XLKeepCellStyle, XLKeepCellType,
|
|
164
|
+
* XLKeepCellValue, XLKeepCellFormula), flags can be combined with bitwise OR
|
|
165
|
+
* @note due to the way OOXML separates comments from the cells, this function will *not* clear a cell comment - refer to XLComments& XLSheet::comments() for that
|
|
166
|
+
*/
|
|
167
|
+
void clear(uint32_t keep);
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @brief
|
|
171
|
+
* @return
|
|
172
|
+
*/
|
|
173
|
+
XLCellValueProxy& value();
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* @brief
|
|
177
|
+
* @return
|
|
178
|
+
*/
|
|
179
|
+
const XLCellValueProxy& value() const;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @brief get the XLCellReference object for the cell.
|
|
183
|
+
* @return A reference to the cells' XLCellReference object.
|
|
184
|
+
*/
|
|
185
|
+
XLCellReference cellReference() const;
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @brief get the XLCell object from the current cell offset
|
|
189
|
+
* @return A reference to the XLCell object.
|
|
190
|
+
*/
|
|
191
|
+
XLCell offset(uint16_t rowOffset, uint16_t colOffset) const;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @brief test if cell has a formula (XML) node, even if it is an empty string
|
|
195
|
+
* @return true if XML has a formula node, empty or not - otherwise false
|
|
196
|
+
*/
|
|
197
|
+
bool hasFormula() const;
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* @brief
|
|
201
|
+
* @return
|
|
202
|
+
*/
|
|
203
|
+
XLFormulaProxy& formula();
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* @brief
|
|
207
|
+
* @return
|
|
208
|
+
*/
|
|
209
|
+
const XLFormulaProxy& formula() const;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @brief
|
|
213
|
+
*/
|
|
214
|
+
std::string getString() const { return value().getString(); }
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* @brief Get the array index of xl/styles.xml:<styleSheet>:<cellXfs> for the style used in this cell.
|
|
218
|
+
* This value is stored in the s attribute of a cell like so: s="2"
|
|
219
|
+
* @returns The index of the applicable format style
|
|
220
|
+
*/
|
|
221
|
+
XLStyleIndex cellFormat() const;
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* @brief Set the cell style (attribute s) with a reference to the array index of xl/styles.xml:<styleSheet>:<cellXfs>
|
|
225
|
+
* @param cellFormatIndex The style to set, corresponding to the nidex of XLStyles::cellStyles()
|
|
226
|
+
* @returns True on success, false on failure
|
|
227
|
+
*/
|
|
228
|
+
bool setCellFormat(XLStyleIndex cellFormatIndex);
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* @brief Print the XML contents of the XLCell using the underlying XMLNode print function
|
|
232
|
+
*/
|
|
233
|
+
void print(std::basic_ostream<char>& ostr) const;
|
|
234
|
+
|
|
235
|
+
private:
|
|
236
|
+
/**
|
|
237
|
+
* @brief
|
|
238
|
+
* @param lhs
|
|
239
|
+
* @param rhs
|
|
240
|
+
* @return
|
|
241
|
+
*/
|
|
242
|
+
static bool isEqual(const XLCell& lhs, const XLCell& rhs);
|
|
243
|
+
|
|
244
|
+
//---------- Private Member Variables ---------- //
|
|
245
|
+
std::unique_ptr<XMLNode> m_cellNode; /**< A pointer to the root XMLNode for the cell. */
|
|
246
|
+
XLSharedStringsRef m_sharedStrings; /**< */
|
|
247
|
+
XLCellValueProxy m_valueProxy; /**< */
|
|
248
|
+
XLFormulaProxy m_formulaProxy; /**< */
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
class OPENXLSX_EXPORT XLCellAssignable : public XLCell
|
|
252
|
+
{
|
|
253
|
+
public:
|
|
254
|
+
/**
|
|
255
|
+
* @brief Default constructor. Constructs a null object.
|
|
256
|
+
*/
|
|
257
|
+
XLCellAssignable() : XLCell() {}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* @brief Copy constructor. Constructs an assignable XLCell from an existing cell
|
|
261
|
+
* @param other the cell to construct from
|
|
262
|
+
*/
|
|
263
|
+
XLCellAssignable (XLCell const & other);
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* @brief Move constructor. Constructs an assignable XLCell from a temporary (r)value
|
|
267
|
+
* @param other the cell to construct from
|
|
268
|
+
*/
|
|
269
|
+
XLCellAssignable (XLCell && other);
|
|
270
|
+
|
|
271
|
+
// /**
|
|
272
|
+
// * @brief Inherit all constructors with parameters from XLCell
|
|
273
|
+
// */
|
|
274
|
+
// template<class base>
|
|
275
|
+
// // explicit XLCellAssignable(base b) : XLCell(b)
|
|
276
|
+
// // NOTE: BUG: explicit keyword triggers tons of compiler errors when << operator attempts to use an XLCell (implicit conversion works because << is overloaded for XLCellAssignable)
|
|
277
|
+
// XLCellAssignable(base b) : XLCell(b)
|
|
278
|
+
// {}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* @brief Copy assignment operator
|
|
282
|
+
* @param other The XLCell object to be copy assigned
|
|
283
|
+
* @return A reference to the new object
|
|
284
|
+
* @note Copies only the cell contents, not the pointer to parent worksheet etc.
|
|
285
|
+
*/
|
|
286
|
+
XLCellAssignable& operator=(const XLCell& other) override;
|
|
287
|
+
XLCellAssignable& operator=(const XLCellAssignable& other);
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* @brief Move assignment operator -> overrides XLCell copy operator, becomes a copy operator
|
|
291
|
+
* @param other The XLCell object to be copy assigned
|
|
292
|
+
* @return A reference to the new object
|
|
293
|
+
* @note Copies only the cell contents, not the pointer to parent worksheet etc.
|
|
294
|
+
*/
|
|
295
|
+
XLCellAssignable& operator=(XLCell&& other) noexcept override;
|
|
296
|
+
XLCellAssignable& operator=(XLCellAssignable&& other) noexcept;
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* @brief Templated assignment operator.
|
|
300
|
+
* @tparam T The type of the value argument.
|
|
301
|
+
* @param value The value.
|
|
302
|
+
* @return A reference to the assigned-to object.
|
|
303
|
+
*/
|
|
304
|
+
template<typename T,
|
|
305
|
+
typename = std::enable_if_t<
|
|
306
|
+
std::is_integral_v<T> || std::is_floating_point_v<T> || std::is_same_v<std::decay_t<T>, std::string> ||
|
|
307
|
+
std::is_same_v<std::decay_t<T>, std::string_view> || std::is_same_v<std::decay_t<T>, const char*> ||
|
|
308
|
+
std::is_same_v<std::decay_t<T>, char*> || std::is_same_v<T, XLDateTime>>>
|
|
309
|
+
XLCellAssignable& operator=(T value)
|
|
310
|
+
{
|
|
311
|
+
XLCell::value() = value; // forward implementation to templated XLCellValue& XLCellValue::operator=(T value)
|
|
312
|
+
return *this;
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
} // namespace OpenXLSX
|
|
316
|
+
|
|
317
|
+
// ========== FRIEND FUNCTION IMPLEMENTATIONS ========== //
|
|
318
|
+
namespace OpenXLSX
|
|
319
|
+
{
|
|
320
|
+
/**
|
|
321
|
+
* @brief
|
|
322
|
+
* @param lhs
|
|
323
|
+
* @param rhs
|
|
324
|
+
* @return
|
|
325
|
+
*/
|
|
326
|
+
inline bool operator==(const XLCell& lhs, const XLCell& rhs) { return XLCell::isEqual(lhs, rhs); }
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* @brief
|
|
330
|
+
* @param lhs
|
|
331
|
+
* @param rhs
|
|
332
|
+
* @return
|
|
333
|
+
*/
|
|
334
|
+
inline bool operator!=(const XLCell& lhs, const XLCell& rhs) { return !XLCell::isEqual(lhs, rhs); }
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* @brief ostream output of XLCell content as string
|
|
338
|
+
* @param os the ostream destination
|
|
339
|
+
* @param c the cell to output to the stream
|
|
340
|
+
* @return
|
|
341
|
+
*/
|
|
342
|
+
inline std::ostream& operator<<(std::ostream& os, const XLCell& c)
|
|
343
|
+
{
|
|
344
|
+
os << c.getString();
|
|
345
|
+
// TODO: send to stream different data types based on cell data type
|
|
346
|
+
return os;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* @brief ostream output of XLCellAssignable content as string
|
|
351
|
+
* @param os the ostream destination
|
|
352
|
+
* @param c the cell to output to the stream
|
|
353
|
+
* @return
|
|
354
|
+
*/
|
|
355
|
+
inline std::ostream& operator<<(std::ostream& os, const XLCellAssignable& c)
|
|
356
|
+
{
|
|
357
|
+
os << c.getString();
|
|
358
|
+
// TODO: send to stream different data types based on cell data type
|
|
359
|
+
return os;
|
|
360
|
+
}
|
|
361
|
+
} // namespace OpenXLSX
|
|
362
|
+
|
|
363
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
364
|
+
# pragma warning(pop)
|
|
365
|
+
#endif // _MSC_VER
|
|
366
|
+
|
|
367
|
+
#endif // OPENXLSX_XLCELL_HPP
|
|
@@ -0,0 +1,252 @@
|
|
|
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_XLCELLITERATOR_HPP
|
|
47
|
+
#define OPENXLSX_XLCELLITERATOR_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
|
+
#include <algorithm>
|
|
56
|
+
|
|
57
|
+
#include "OpenXLSX-Exports.hpp"
|
|
58
|
+
#include "XLCell.hpp"
|
|
59
|
+
#include "XLCellReference.hpp"
|
|
60
|
+
#include "XLIterator.hpp"
|
|
61
|
+
#include "XLXmlParserForwardDeclarations.hpp"
|
|
62
|
+
|
|
63
|
+
namespace OpenXLSX
|
|
64
|
+
{
|
|
65
|
+
/**
|
|
66
|
+
* @brief locate the XML row node within sheetDataNode for the row at rowNumber
|
|
67
|
+
* @param sheetDataNode the XML sheetData node to search in
|
|
68
|
+
* @param rowNumber the number of the row to locate
|
|
69
|
+
* @return the XMLNode pointing to the row, or an empty XMLNode if the row does not exist
|
|
70
|
+
*/
|
|
71
|
+
XMLNode findRowNode(XMLNode sheetDataNode, uint32_t rowNumber);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @brief locate the XML cell node within rownode for the cell at columnNumber
|
|
75
|
+
* @param rowNode the XML node of the row to search in
|
|
76
|
+
* @param columnNumber the column number of the cell to locate
|
|
77
|
+
* @return the XMLNode pointing to the cell, or an empty XMLNode if the cell does not exist
|
|
78
|
+
*/
|
|
79
|
+
XMLNode findCellNode(XMLNode rowNode, uint16_t columnNumber);
|
|
80
|
+
|
|
81
|
+
class OPENXLSX_EXPORT XLCellIterator
|
|
82
|
+
{
|
|
83
|
+
public:
|
|
84
|
+
using iterator_category = std::forward_iterator_tag;
|
|
85
|
+
using value_type = XLCell;
|
|
86
|
+
using difference_type = int64_t;
|
|
87
|
+
using pointer = XLCell*;
|
|
88
|
+
using reference = XLCell&;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @brief
|
|
92
|
+
* @param cellRange
|
|
93
|
+
* @param loc
|
|
94
|
+
* @param colStyles is an optional vector with all column styles configured for the worksheet when the iterator is created.
|
|
95
|
+
* This vector - if provided - will be used to get default cell styles for newly created cells, instead of performing
|
|
96
|
+
* a potentially expensive lookup in <cols>
|
|
97
|
+
*/
|
|
98
|
+
explicit XLCellIterator(const XLCellRange& cellRange, XLIteratorLocation loc, std::vector<XLStyleIndex> const * colStyles);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @brief
|
|
102
|
+
*/
|
|
103
|
+
~XLCellIterator();
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @brief
|
|
107
|
+
* @param other
|
|
108
|
+
*/
|
|
109
|
+
XLCellIterator(const XLCellIterator& other);
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @brief
|
|
113
|
+
* @param other
|
|
114
|
+
*/
|
|
115
|
+
[[maybe_unused]] XLCellIterator(XLCellIterator&& other) noexcept;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @brief
|
|
119
|
+
* @param other
|
|
120
|
+
* @return
|
|
121
|
+
*/
|
|
122
|
+
XLCellIterator& operator=(const XLCellIterator& other);
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @brief
|
|
126
|
+
* @param other
|
|
127
|
+
* @return
|
|
128
|
+
*/
|
|
129
|
+
XLCellIterator& operator=(XLCellIterator&& other) noexcept;
|
|
130
|
+
|
|
131
|
+
private: // ===== Switch to private method that is used by the XLIterator increment operator++ and the dereference operators * and ->
|
|
132
|
+
static constexpr const bool XLCreateIfMissing = true; // code readability for updateCurrentCell parameter createIfMissing
|
|
133
|
+
static constexpr const bool XLDoNotCreateIfMissing = false; // "
|
|
134
|
+
/**
|
|
135
|
+
* @brief update m_currentCell by fetching (or inserting) a cell at m_currentRow, m_currentColumn
|
|
136
|
+
* @param createIfMissing m_currentCell will only be inserted if createIfMissing is true
|
|
137
|
+
*/
|
|
138
|
+
void updateCurrentCell(bool createIfMissing);
|
|
139
|
+
|
|
140
|
+
public: // ===== Switch back to public methods
|
|
141
|
+
/**
|
|
142
|
+
* @brief
|
|
143
|
+
* @return
|
|
144
|
+
*/
|
|
145
|
+
XLCellIterator& operator++();
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @brief
|
|
149
|
+
* @return
|
|
150
|
+
*/
|
|
151
|
+
XLCellIterator operator++(int); // NOLINT
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @brief
|
|
155
|
+
* @return
|
|
156
|
+
*/
|
|
157
|
+
reference operator*();
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* @brief
|
|
161
|
+
* @return
|
|
162
|
+
*/
|
|
163
|
+
pointer operator->();
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @brief
|
|
167
|
+
* @param rhs
|
|
168
|
+
* @return
|
|
169
|
+
*/
|
|
170
|
+
bool operator==(const XLCellIterator& rhs) const;
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @brief
|
|
174
|
+
* @param rhs
|
|
175
|
+
* @return
|
|
176
|
+
*/
|
|
177
|
+
bool operator!=(const XLCellIterator& rhs) const;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* @brief determine whether the cell that the iterator points to exists (cell at m_currentRow, m_currentColumn)
|
|
181
|
+
* @return true if XML already has an entry for that cell, otherwise false
|
|
182
|
+
*/
|
|
183
|
+
bool cellExists();
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @brief determine whether iterator is at 1 beyond the last cell in range
|
|
187
|
+
* @return
|
|
188
|
+
* @note 28-07-2024: Removed const from return type (Troldal)
|
|
189
|
+
*/
|
|
190
|
+
bool endReached() const { return m_endReached; }
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* @brief
|
|
194
|
+
* @param last
|
|
195
|
+
* @return
|
|
196
|
+
*/
|
|
197
|
+
uint64_t distance(const XLCellIterator& last);
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* @brief get the XLCellReference::address corresponding to the current iterator position
|
|
201
|
+
* @return an XLCellReference::address, with m_bottomRight.col() + 1 for the beyond-the-end iterator
|
|
202
|
+
* @note 28-07-2024: Removed const from return type (Troldal)
|
|
203
|
+
*/
|
|
204
|
+
std::string address() const;
|
|
205
|
+
|
|
206
|
+
private:
|
|
207
|
+
std::unique_ptr<XMLNode> m_dataNode; /**< */
|
|
208
|
+
XLCellReference m_topLeft; /**< The cell reference of the first cell in the range */
|
|
209
|
+
XLCellReference m_bottomRight; /**< The cell reference of the last cell in the range */
|
|
210
|
+
XLSharedStringsRef m_sharedStrings; /**< */
|
|
211
|
+
bool m_endReached; /**< */
|
|
212
|
+
std::unique_ptr<XMLNode> m_hintNode; /**< The cell node of the last existing cell found up to current iterator position */
|
|
213
|
+
uint32_t m_hintRow; /**< the row number for m_hintCell */
|
|
214
|
+
XLCell m_currentCell; /**< The cell to which the iterator is currently pointing, if it exists, otherwise an empty XLCell */
|
|
215
|
+
static constexpr const int XLNotLoaded = 0; // code readability for m_currentCellStatus
|
|
216
|
+
static constexpr const int XLNoSuchCell = 1; // "
|
|
217
|
+
static constexpr const int XLLoaded = 2; // "
|
|
218
|
+
int m_currentCellStatus; /**< Status of m_currentCell: XLNotLoaded, XLNoSuchCell or XLLoaded */
|
|
219
|
+
uint32_t m_currentRow;
|
|
220
|
+
uint16_t m_currentColumn;
|
|
221
|
+
std::vector<XLStyleIndex> const * m_colStyles;
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* @brief ostream output of XLIterator position as XLCellReference::address
|
|
226
|
+
* @param os the ostream destination
|
|
227
|
+
* @param it the XLIterator whose position to send to the stream
|
|
228
|
+
* @return
|
|
229
|
+
*/
|
|
230
|
+
inline std::ostream& operator<<(std::ostream& os, const XLCellIterator& it)
|
|
231
|
+
{
|
|
232
|
+
os << it.address();
|
|
233
|
+
return os;
|
|
234
|
+
}
|
|
235
|
+
} // namespace OpenXLSX
|
|
236
|
+
|
|
237
|
+
// ===== Template specialization for std::distance.
|
|
238
|
+
namespace std // NOLINT
|
|
239
|
+
{
|
|
240
|
+
using OpenXLSX::XLCellIterator;
|
|
241
|
+
template<>
|
|
242
|
+
inline std::iterator_traits<XLCellIterator>::difference_type distance<XLCellIterator>(XLCellIterator first, XLCellIterator last)
|
|
243
|
+
{
|
|
244
|
+
return static_cast<std::iterator_traits<XLCellIterator>::difference_type>(first.distance(last));
|
|
245
|
+
}
|
|
246
|
+
} // namespace std
|
|
247
|
+
|
|
248
|
+
#ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
|
|
249
|
+
# pragma warning(pop)
|
|
250
|
+
#endif // _MSC_VER
|
|
251
|
+
|
|
252
|
+
#endif // OPENXLSX_XLCELLITERATOR_HPP
|