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.
Files changed (428) hide show
  1. package/NitroXlsx.podspec +27 -27
  2. package/Package.swift +35 -10
  3. package/README.md +220 -58
  4. package/android/CMakeLists.txt +24 -27
  5. package/android/cpp-adapter.cpp +12 -0
  6. package/android/src/main/java/com/margelo/nitro/xlsx/NitroXlsxPackage.kt +9 -0
  7. package/cpp/HybridNitroXlsx.cpp +25 -179
  8. package/cpp/HybridNitroXlsx.hpp +2 -2
  9. package/cpp/HybridXlsxConditionalFormat.cpp +252 -0
  10. package/cpp/HybridXlsxConditionalFormat.hpp +62 -0
  11. package/cpp/HybridXlsxConditionalFormats.cpp +46 -0
  12. package/cpp/HybridXlsxConditionalFormats.hpp +28 -0
  13. package/cpp/HybridXlsxWorkbook.cpp +159 -196
  14. package/cpp/HybridXlsxWorkbook.hpp +7 -2
  15. package/cpp/HybridXlsxWorksheet.cpp +433 -62
  16. package/cpp/HybridXlsxWorksheet.hpp +73 -26
  17. package/cpp/XlsxCacheDir.cpp +76 -0
  18. package/cpp/XlsxCacheDir.hpp +27 -0
  19. package/cpp/XlsxError.hpp +68 -0
  20. package/cpp/XlsxJson.cpp +185 -0
  21. package/cpp/XlsxJson.hpp +36 -0
  22. package/ios/XlsxCacheDir.mm +60 -0
  23. package/nitrogen/generated/android/NitroXlsx+autolinking.cmake +2 -0
  24. package/nitrogen/generated/shared/c++/HybridNitroXlsxSpec.hpp +5 -3
  25. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.cpp +54 -0
  26. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatSpec.hpp +95 -0
  27. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.cpp +24 -0
  28. package/nitrogen/generated/shared/c++/HybridXlsxConditionalFormatsSpec.hpp +68 -0
  29. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.cpp +3 -0
  30. package/nitrogen/generated/shared/c++/HybridXlsxWorkbookSpec.hpp +6 -1
  31. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.cpp +47 -19
  32. package/nitrogen/generated/shared/c++/HybridXlsxWorksheetSpec.hpp +52 -20
  33. package/package.json +3 -3
  34. package/scripts/run-cpp-tests.sh +14 -0
  35. package/src/__mocks__/react-native-nitro-modules.ts +1 -0
  36. package/src/__tests__/index.test.ts +76 -7
  37. package/src/index.ts +107 -18
  38. package/src/specs/NitroXlsx.nitro.ts +141 -44
  39. package/thirdparty/OpenXLSX/.clang-format +118 -0
  40. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  41. package/thirdparty/OpenXLSX/.gitignore +130 -0
  42. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  43. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  44. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  45. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  46. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  47. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  48. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  49. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  50. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  51. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  52. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  53. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  54. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  55. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  56. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  57. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  58. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  59. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  60. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  61. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  62. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  63. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  64. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  65. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  66. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  67. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  68. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  69. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  70. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  71. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  72. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  73. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  74. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  75. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  76. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  77. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  78. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  79. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  80. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  81. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  82. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  83. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  84. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  123. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  124. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  125. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  126. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  127. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  128. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  129. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  130. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  131. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  132. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  133. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  134. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  135. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  136. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  137. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  138. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  139. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  140. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  141. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  142. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  143. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  144. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  145. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  146. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  147. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  148. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  149. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  150. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  151. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  152. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  153. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  154. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  155. package/thirdparty/OpenXLSX/README.md +1279 -0
  156. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  157. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  158. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  159. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  160. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  161. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  162. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  163. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  164. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  165. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  166. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  167. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  168. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  169. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  170. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  171. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  172. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  173. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  174. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  175. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  176. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  177. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  178. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  179. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  180. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  181. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  182. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  183. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  184. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  185. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  186. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  187. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  188. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  189. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  190. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  191. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  192. package/thirdparty/README.md +42 -0
  193. package/thirdparty/miniz/.clang-format +47 -0
  194. package/thirdparty/miniz/.travis.yml +2 -0
  195. package/thirdparty/miniz/CMakeLists.txt +333 -0
  196. package/thirdparty/miniz/CMakePresets.json +31 -0
  197. package/thirdparty/miniz/ChangeLog.md +272 -0
  198. package/thirdparty/miniz/Config.cmake.in +1 -0
  199. package/thirdparty/miniz/LICENSE +22 -0
  200. package/thirdparty/miniz/amalgamate.sh +57 -0
  201. package/thirdparty/miniz/examples/example1.c +105 -0
  202. package/thirdparty/miniz/examples/example2.c +164 -0
  203. package/thirdparty/miniz/examples/example3.c +269 -0
  204. package/thirdparty/miniz/examples/example4.c +102 -0
  205. package/thirdparty/miniz/examples/example5.c +327 -0
  206. package/thirdparty/miniz/examples/example6.c +189 -0
  207. package/thirdparty/miniz/meson.build +21 -0
  208. package/thirdparty/miniz/miniz.c +646 -0
  209. package/thirdparty/miniz/miniz.h +615 -0
  210. package/thirdparty/miniz/miniz.pc.in +13 -0
  211. package/thirdparty/miniz/miniz_common.h +89 -0
  212. package/thirdparty/miniz/miniz_export.h +20 -0
  213. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  214. package/thirdparty/miniz/miniz_tdef.h +199 -0
  215. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  216. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  217. package/thirdparty/miniz/miniz_zip.c +4895 -0
  218. package/thirdparty/miniz/miniz_zip.h +454 -0
  219. package/thirdparty/miniz/readme.md +46 -0
  220. package/thirdparty/miniz/test.sh +36 -0
  221. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  222. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  223. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  224. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  225. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  226. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  227. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  228. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  229. package/thirdparty/miniz/tests/main.cpp +185 -0
  230. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  231. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  232. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  233. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  234. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  235. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  236. package/thirdparty/miniz/tests/timer.cpp +152 -0
  237. package/thirdparty/miniz/tests/timer.h +40 -0
  238. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  239. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  240. package/thirdparty/miniz/tests/zip.dict +9 -0
  241. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  242. package/thirdparty/pugixml/.codecov.yml +7 -0
  243. package/thirdparty/pugixml/.gitattributes +1 -0
  244. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  245. package/thirdparty/pugixml/LICENSE.md +24 -0
  246. package/thirdparty/pugixml/Makefile +98 -0
  247. package/thirdparty/pugixml/README.md +81 -0
  248. package/thirdparty/pugixml/SECURITY.md +9 -0
  249. package/thirdparty/pugixml/appveyor.yml +50 -0
  250. package/thirdparty/pugixml/docs/config.adoc +7 -0
  251. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  252. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  253. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  254. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  255. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  256. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  257. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  258. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  259. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  260. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  261. package/thirdparty/pugixml/docs/manual.html +6395 -0
  262. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  263. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  264. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  265. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  266. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  267. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  268. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  269. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  270. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  271. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  272. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  273. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  274. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  275. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  276. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  277. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  278. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  279. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  280. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  281. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  282. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  283. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  284. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  285. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  286. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  287. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  288. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  289. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  290. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  291. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  292. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  293. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  294. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  295. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  296. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  297. package/thirdparty/pugixml/readme.txt +50 -0
  298. package/thirdparty/pugixml/scripts/archive.py +54 -0
  299. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  300. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  301. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  302. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  303. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  304. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  305. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  306. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  307. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  308. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  309. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  310. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  311. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  312. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  313. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  314. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  315. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  316. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  317. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  318. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  319. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  320. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  321. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  322. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  323. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  324. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  325. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  326. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  327. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  328. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  329. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  330. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  331. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  332. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  333. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  334. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  335. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  336. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  337. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  338. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  339. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  340. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  341. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  342. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  343. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  344. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  345. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  346. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  347. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  348. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  349. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  350. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  351. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  352. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  353. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  354. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  355. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  356. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  357. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  358. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  359. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  360. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  361. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  362. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  363. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  364. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  365. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  366. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  367. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  368. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  369. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  370. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  371. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  372. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  373. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  374. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  375. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  376. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  377. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  378. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  379. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  380. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  381. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  382. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  383. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  384. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  385. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  386. package/thirdparty/pugixml/tests/main.cpp +218 -0
  387. package/thirdparty/pugixml/tests/test.cpp +220 -0
  388. package/thirdparty/pugixml/tests/test.hpp +175 -0
  389. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  390. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  391. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  392. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  393. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  394. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  395. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  396. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  397. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  398. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  399. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  400. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  401. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  402. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  403. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  404. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  405. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  406. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  407. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  408. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  409. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  410. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  411. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  412. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  413. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  414. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  415. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  416. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  417. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  418. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  419. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  420. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  421. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  422. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  423. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  424. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  425. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  426. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  427. package/ios/dummy.swift +0 -2
  428. package/scripts/prepare-openxlsx.js +0 -109
@@ -0,0 +1,721 @@
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_XLROW_HPP
47
+ #define OPENXLSX_XLROW_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 "XLRowData.hpp"
58
+
59
+ // ========== CLASS AND ENUM TYPE DEFINITIONS ========== //
60
+ namespace OpenXLSX
61
+ {
62
+ class XLRowRange;
63
+
64
+ /**
65
+ * @brief The XLRow class represent a row in an Excel spreadsheet. Using XLRow objects, various row formatting
66
+ * options can be set and modified.
67
+ */
68
+ class OPENXLSX_EXPORT XLRow
69
+ {
70
+ friend class XLRowIterator;
71
+ friend class XLRowReverseIterator;
72
+ friend class XLRowDataProxy;
73
+ friend bool operator==(const XLRow& lhs, const XLRow& rhs);
74
+ friend bool operator!=(const XLRow& lhs, const XLRow& rhs);
75
+ friend bool operator<(const XLRow& lhs, const XLRow& rhs);
76
+ friend bool operator>(const XLRow& lhs, const XLRow& rhs);
77
+ friend bool operator<=(const XLRow& lhs, const XLRow& rhs);
78
+ friend bool operator>=(const XLRow& lhs, const XLRow& rhs);
79
+
80
+ //---------- PUBLIC MEMBER FUNCTIONS ----------//
81
+ public:
82
+ /**
83
+ * @brief Default constructor
84
+ */
85
+ XLRow();
86
+
87
+ /**
88
+ * @brief
89
+ * @param rowNode
90
+ * @param sharedStrings
91
+ */
92
+ XLRow(const XMLNode& rowNode, const XLSharedStrings& sharedStrings);
93
+
94
+ /**
95
+ * @brief Copy Constructor
96
+ * @note The copy constructor is explicitly deleted
97
+ */
98
+ XLRow(const XLRow& other);
99
+
100
+ /**
101
+ * @brief Move Constructor
102
+ * @note The move constructor has been explicitly deleted.
103
+ */
104
+ XLRow(XLRow&& other) noexcept;
105
+
106
+ /**
107
+ * @brief Destructor
108
+ * @note The destructor has a default implementation.
109
+ */
110
+ ~XLRow();
111
+
112
+ /**
113
+ * @brief Copy assignment operator.
114
+ */
115
+ XLRow& operator=(const XLRow& other);
116
+
117
+ /**
118
+ * @brief Move assignment operator.
119
+ */
120
+ XLRow& operator=(XLRow&& other) noexcept;
121
+
122
+ /**
123
+ * @brief test if row object has no (valid) content
124
+ * @return
125
+ */
126
+ bool empty() const;
127
+
128
+ /**
129
+ * @brief opposite of empty()
130
+ * @return
131
+ */
132
+ explicit operator bool() const;
133
+
134
+ /**
135
+ * @brief Get the height of the row.
136
+ * @return the row height.
137
+ */
138
+ double height() const;
139
+
140
+ /**
141
+ * @brief Set the height of the row.
142
+ * @param height The height of the row.
143
+ */
144
+ void setHeight(float height);
145
+
146
+ /**
147
+ * @brief Get the descent of the row, which is the vertical distance in pixels from the bottom of the cells
148
+ * in the current row to the typographical baseline of the cell content.
149
+ * @return The row descent.
150
+ */
151
+ float descent() const;
152
+
153
+ /**
154
+ * @brief Set the descent of the row, which is he vertical distance in pixels from the bottom of the cells
155
+ * in the current row to the typographical baseline of the cell content.
156
+ * @param descent The row descent.
157
+ */
158
+ void setDescent(float descent);
159
+
160
+ /**
161
+ * @brief Is the row hidden?
162
+ * @return The state of the row.
163
+ */
164
+ bool isHidden() const;
165
+
166
+ /**
167
+ * @brief Set the row to be hidden or visible.
168
+ * @param state The state of the row.
169
+ */
170
+ void setHidden(bool state);
171
+
172
+ /**
173
+ * @brief
174
+ * @return
175
+ */
176
+ uint32_t rowNumber() const;
177
+
178
+ /**
179
+ * @brief Get the number of cells in the row.
180
+ * @return The number of cells in the row.
181
+ */
182
+ uint16_t cellCount() const;
183
+
184
+ /**
185
+ * @brief
186
+ * @return
187
+ */
188
+ XLRowDataProxy& values();
189
+
190
+ /**
191
+ * @brief
192
+ * @return
193
+ */
194
+ const XLRowDataProxy& values() const;
195
+
196
+ /**
197
+ * @brief
198
+ * @tparam T
199
+ * @return
200
+ */
201
+ template<typename T>
202
+ T values() const
203
+ {
204
+ return static_cast<T>(values());
205
+ }
206
+
207
+ /**
208
+ * @brief
209
+ * @return
210
+ */
211
+ XLRowDataRange cells() const;
212
+
213
+ /**
214
+ * @brief
215
+ * @param cellCount
216
+ * @return
217
+ */
218
+ XLRowDataRange cells(uint16_t cellCount) const;
219
+
220
+ /**
221
+ * @brief
222
+ * @param firstCell
223
+ * @param lastCell
224
+ * @return
225
+ */
226
+ XLRowDataRange cells(uint16_t firstCell, uint16_t lastCell) const;
227
+
228
+ /**
229
+ * @brief Find a cell at columNumber, or return an empty cell
230
+ * @param columNumber The column at which to check for an existing cell
231
+ * @return An XLCell object (that bool-evaluates to false if cell was not found)
232
+ */
233
+ XLCell findCell(uint16_t columNumber);
234
+
235
+ /**
236
+ * @brief Get the array index of xl/styles.xml:<styleSheet>:<cellXfs> for the style assigned to the row.
237
+ * This value is stored in the row attributes like so: s="2"
238
+ * @returns The index of the applicable format style
239
+ */
240
+ XLStyleIndex format() const;
241
+
242
+ /**
243
+ * @brief Set the row style as a reference to the array index of xl/styles.xml:<styleSheet>:<cellXfs>
244
+ * @param cellFormatIndex The style to set, corresponding to the index of XLStyles::cellStyles()
245
+ * @returns true on success, false on failure
246
+ */
247
+ bool setFormat(XLStyleIndex cellFormatIndex);
248
+
249
+ private:
250
+ /**
251
+ * @brief
252
+ * @param lhs
253
+ * @param rhs
254
+ * @return
255
+ */
256
+ static bool isEqual(const XLRow& lhs, const XLRow& rhs);
257
+
258
+ /**
259
+ * @brief
260
+ * @param lhs
261
+ * @param rhs
262
+ * @return
263
+ */
264
+ static bool isLessThan(const XLRow& lhs, const XLRow& rhs);
265
+
266
+ //---------- PRIVATE MEMBER VARIABLES ----------//
267
+ std::unique_ptr<XMLNode> m_rowNode; /**< The XMLNode object for the row. */
268
+ XLSharedStringsRef m_sharedStrings; /**< */
269
+ XLRowDataProxy m_rowDataProxy; /**< */
270
+ };
271
+
272
+ /**
273
+ * @brief
274
+ */
275
+ class OPENXLSX_EXPORT XLRowIterator
276
+ {
277
+ public:
278
+ using iterator_category = std::forward_iterator_tag;
279
+ using value_type = XLRow;
280
+ using difference_type = int64_t;
281
+ using pointer = XLRow*;
282
+ using reference = XLRow&;
283
+
284
+ /**
285
+ * @brief constructor
286
+ * @param rowRange
287
+ * @param loc
288
+ */
289
+ explicit XLRowIterator(const XLRowRange& rowRange, XLIteratorLocation loc);
290
+
291
+ /**
292
+ * @brief
293
+ */
294
+ ~XLRowIterator();
295
+
296
+ /**
297
+ * @brief copy constructor
298
+ * @param other
299
+ */
300
+ XLRowIterator(const XLRowIterator& other);
301
+
302
+ /**
303
+ * @brief move constructor
304
+ * @param other
305
+ */
306
+ XLRowIterator(XLRowIterator&& other) noexcept;
307
+
308
+ /**
309
+ * @brief copy assignment operator
310
+ * @param other
311
+ * @return
312
+ */
313
+ XLRowIterator& operator=(const XLRowIterator& other);
314
+
315
+ /**
316
+ * @brief move assignment operator
317
+ * @param other
318
+ * @return
319
+ */
320
+ XLRowIterator& operator=(XLRowIterator&& other) noexcept;
321
+
322
+ private: // ===== Switch to private method that is used by the XLRowIterator increment operator++ and the dereference operators * and ->
323
+ static constexpr const bool XLCreateIfMissing = true; // code readability for updateCurrentRow parameter createIfMissing
324
+ static constexpr const bool XLDoNotCreateIfMissing = false; // "
325
+ /**
326
+ * @brief update m_currentRow by fetching (or inserting) a row at m_currentRowNumber
327
+ * @param createIfMissing m_currentRow will only be inserted if createIfMissing is true
328
+ */
329
+ void updateCurrentRow(bool createIfMissing);
330
+
331
+ public: // ===== Switch back to public methods
332
+
333
+ /**
334
+ * @brief
335
+ * @return
336
+ */
337
+ XLRowIterator& operator++();
338
+
339
+ /**
340
+ * @brief
341
+ * @return
342
+ */
343
+ XLRowIterator operator++(int); // NOLINT
344
+
345
+ /**
346
+ * @brief
347
+ * @return
348
+ */
349
+ reference operator*();
350
+
351
+ /**
352
+ * @brief
353
+ * @return
354
+ */
355
+ pointer operator->();
356
+
357
+ /**
358
+ * @brief
359
+ * @param rhs
360
+ * @return
361
+ */
362
+ bool operator==(const XLRowIterator& rhs) const;
363
+
364
+ /**
365
+ * @brief
366
+ * @param rhs
367
+ * @return
368
+ */
369
+ bool operator!=(const XLRowIterator& rhs) const;
370
+
371
+ /**
372
+ * @brief
373
+ * @return
374
+ */
375
+ explicit operator bool() const;
376
+
377
+ /**
378
+ * @brief determine whether the row that the iterator points to exists (m_currentRowNumber)
379
+ * @return true if XML already has an entry for that cell, otherwise false
380
+ */
381
+ bool rowExists();
382
+
383
+ /**
384
+ * @brief determine whether iterator is at 1 beyond the last row in range
385
+ * @return
386
+ */
387
+ bool endReached() const { return m_endReached; }
388
+
389
+ /**
390
+ * @brief get the row number corresponding to the current iterator position
391
+ * @return a row number, with m_lastRow + 1 for the beyond-the-end iterator
392
+ */
393
+ uint32_t rowNumber() const { return m_endReached ? m_lastRow + 1 : m_currentRowNumber; }
394
+
395
+ /**
396
+ * @brief check the iterator direction
397
+ * @return XLIteratorDirection::Forward
398
+ */
399
+ constexpr XLIteratorDirection direction() const { return XLIteratorDirection::Forward; }
400
+
401
+ private:
402
+ std::unique_ptr<XMLNode> m_dataNode; /**< */
403
+ uint32_t m_firstRow { 1 }; /**< The cell reference of the first cell in the range */
404
+ uint32_t m_lastRow { 1 }; /**< The cell reference of the last cell in the range */
405
+ XLRow m_currentRow; /**< */
406
+ XLSharedStringsRef m_sharedStrings; /**< */
407
+
408
+ // helper variables for non-creating iterator functionality
409
+ bool m_endReached; /**< */
410
+ std::unique_ptr<XMLNode> m_hintRow; /**< The cell node of the last existing row found up to current iterator position */
411
+ uint32_t m_hintRowNumber; /**< the row number for m_hintRow */
412
+ static constexpr const int XLNotLoaded = 0; // code readability for m_currentRowStatus
413
+ static constexpr const int XLNoSuchRow = 1; // "
414
+ static constexpr const int XLLoaded = 2; // "
415
+ int m_currentRowStatus; /**< Status of m_currentRow: XLNotLoaded, XLNoSuchRow or XLLoaded */
416
+ uint32_t m_currentRowNumber;
417
+ };
418
+
419
+ /**
420
+ * @brief
421
+ */
422
+ class OPENXLSX_EXPORT XLRowReverseIterator
423
+ {
424
+ public:
425
+ using iterator_category = std::forward_iterator_tag;
426
+ using value_type = XLRow;
427
+ using difference_type = int64_t;
428
+ using pointer = XLRow*;
429
+ using reference = XLRow&;
430
+
431
+ /**
432
+ * @brief constructor
433
+ * @param rowRange
434
+ * @param loc
435
+ */
436
+ explicit XLRowReverseIterator(const XLRowRange& rowRange, XLIteratorLocation loc);
437
+
438
+ /**
439
+ * @brief
440
+ */
441
+ ~XLRowReverseIterator();
442
+
443
+ /**
444
+ * @brief copy constructor
445
+ * @param other
446
+ */
447
+ XLRowReverseIterator(const XLRowReverseIterator& other);
448
+
449
+ /**
450
+ * @brief move constructor
451
+ * @param other
452
+ */
453
+ XLRowReverseIterator(XLRowReverseIterator&& other) noexcept;
454
+
455
+ /**
456
+ * @brief copy assignment operator
457
+ * @param other
458
+ * @return
459
+ */
460
+ XLRowReverseIterator& operator=(const XLRowReverseIterator& other);
461
+
462
+ /**
463
+ * @brief move assignment operator
464
+ * @param other
465
+ * @return
466
+ */
467
+ XLRowReverseIterator& operator=(XLRowReverseIterator&& other) noexcept;
468
+
469
+ private: // ===== Switch to private method that is used by the XLRowReverseIterator increment operator++ and the dereference operators * and ->
470
+ static constexpr const bool XLCreateIfMissing = true; // code readability for updateCurrentRow parameter createIfMissing
471
+ static constexpr const bool XLDoNotCreateIfMissing = false; // "
472
+ /**
473
+ * @brief update m_currentRow by fetching (or inserting) a row at m_currentRowNumber
474
+ * @param createIfMissing m_currentRow will only be inserted if createIfMissing is true
475
+ */
476
+ void updateCurrentRow(bool createIfMissing);
477
+
478
+ public: // ===== Switch back to public methods
479
+
480
+ /**
481
+ * @brief
482
+ * @return
483
+ */
484
+ XLRowReverseIterator& operator++();
485
+
486
+ /**
487
+ * @brief
488
+ * @return
489
+ */
490
+ XLRowReverseIterator operator++(int);
491
+
492
+ /**
493
+ * @brief
494
+ * @return
495
+ */
496
+ reference operator*();
497
+
498
+ /**
499
+ * @brief
500
+ * @return
501
+ */
502
+ pointer operator->();
503
+
504
+ /**
505
+ * @brief
506
+ * @param rhs
507
+ * @return
508
+ */
509
+ bool operator==(const XLRowReverseIterator& rhs) const;
510
+
511
+ /**
512
+ * @brief
513
+ * @param rhs
514
+ * @return
515
+ */
516
+ bool operator!=(const XLRowReverseIterator& rhs) const;
517
+
518
+ /**
519
+ * @brief
520
+ * @return
521
+ */
522
+ explicit operator bool() const;
523
+
524
+ /**
525
+ * @brief determine whether the row that the iterator points to exists (m_currentRowNumber)
526
+ * @return true if XML already has an entry for that cell, otherwise false
527
+ */
528
+ bool rowExists();
529
+
530
+ /**
531
+ * @brief determine whether iterator is at 1 beyond the last row in range
532
+ * @return
533
+ */
534
+ bool endReached() const { return m_endReached; }
535
+
536
+ /**
537
+ * @brief get the row number corresponding to the current iterator position
538
+ * @return a row number, with m_lastRow + 1 for the beyond-the-end iterator
539
+ */
540
+ uint32_t rowNumber() const { return m_endReached ? m_firstRow - 1 : m_currentRowNumber; }
541
+
542
+ /**
543
+ * @brief check the iterator direction
544
+ * @return XLIteratorDirection::Reverse
545
+ */
546
+ constexpr XLIteratorDirection direction() const { return XLIteratorDirection::Reverse; }
547
+
548
+ private:
549
+ std::unique_ptr<XMLNode> m_dataNode; /**< */
550
+ uint32_t m_firstRow { 1 }; /**< The cell reference of the first cell in the range */
551
+ uint32_t m_lastRow { 1 }; /**< The cell reference of the last cell in the range */
552
+ XLRow m_currentRow; /**< */
553
+ XLSharedStringsRef m_sharedStrings; /**< */
554
+
555
+ // helper variables for non-creating iterator functionality
556
+ bool m_endReached; /**< */
557
+ std::unique_ptr<XMLNode> m_hintRow; /**< The cell node of the last existing row found up to current iterator position */
558
+ uint32_t m_hintRowNumber; /**< the row number for m_hintRow */
559
+ static constexpr const int XLNotLoaded = 0; // code readability for m_currentRowStatus
560
+ static constexpr const int XLNoSuchRow = 1; // "
561
+ static constexpr const int XLLoaded = 2; // "
562
+ int m_currentRowStatus; /**< Status of m_currentRow: XLNotLoaded, XLNoSuchRow or XLLoaded */
563
+ uint32_t m_currentRowNumber;
564
+ };
565
+
566
+ /**
567
+ * @brief
568
+ */
569
+ class OPENXLSX_EXPORT XLRowRange
570
+ {
571
+ friend class XLRowIterator;
572
+ friend class XLRowReverseIterator;
573
+
574
+ //----------------------------------------------------------------------------------------------------------------------
575
+ // Public Member Functions
576
+ //----------------------------------------------------------------------------------------------------------------------
577
+
578
+ public:
579
+ typedef XLRowReverseIterator reverse_iterator; // to be used by templated class XLReverseRange
580
+
581
+ /**
582
+ * @brief constructor
583
+ * @param dataNode
584
+ * @param first
585
+ * @param last
586
+ * @param sharedStrings
587
+ */
588
+ explicit XLRowRange(const XMLNode& dataNode, uint32_t first, uint32_t last, const XLSharedStrings& sharedStrings);
589
+
590
+ /**
591
+ * @brief copy constructor
592
+ * @param other
593
+ */
594
+ XLRowRange(const XLRowRange& other);
595
+
596
+ /**
597
+ * @brief move constructor
598
+ * @param other
599
+ */
600
+ XLRowRange(XLRowRange&& other) noexcept;
601
+
602
+ /**
603
+ * @brief destructor
604
+ */
605
+ ~XLRowRange();
606
+
607
+ /**
608
+ * @brief copy assignment operator
609
+ * @param other
610
+ * @return
611
+ */
612
+ XLRowRange& operator=(const XLRowRange& other);
613
+
614
+ /**
615
+ * @brief move assignment operator
616
+ * @param other
617
+ * @return
618
+ */
619
+ XLRowRange& operator=(XLRowRange&& other) noexcept;
620
+
621
+ /**
622
+ * @brief
623
+ * @return
624
+ */
625
+ uint32_t rowCount() const;
626
+
627
+ /**
628
+ * @brief
629
+ * @return
630
+ */
631
+ XLRowIterator begin();
632
+
633
+ /**
634
+ * @brief
635
+ * @return
636
+ */
637
+ XLRowIterator end();
638
+
639
+ /**
640
+ * @brief provide a means to reverse-iterate through a row range
641
+ * @return the reverse begin of the range (iterator to the last row in the range)
642
+ */
643
+ XLRowReverseIterator rbegin();
644
+
645
+ /**
646
+ * @brief provide a means to reverse-iterate through a row range
647
+ * @return the reverse end of the range (iterator to 1 before the first row in the range)
648
+ */
649
+ XLRowReverseIterator rend();
650
+
651
+ //----------------------------------------------------------------------------------------------------------------------
652
+ // Private Member Variables
653
+ //----------------------------------------------------------------------------------------------------------------------
654
+
655
+ private:
656
+ std::unique_ptr<XMLNode> m_dataNode; /**< */
657
+ uint32_t m_firstRow; /**< The cell reference of the first cell in the range */
658
+ uint32_t m_lastRow; /**< The cell reference of the last cell in the range */
659
+ XLSharedStringsRef m_sharedStrings; /**< */
660
+ };
661
+
662
+ } // namespace OpenXLSX
663
+
664
+ // ========== FRIEND FUNCTION IMPLEMENTATIONS ========== //
665
+ namespace OpenXLSX
666
+ {
667
+ /**
668
+ * @brief
669
+ * @param lhs
670
+ * @param rhs
671
+ * @return
672
+ */
673
+ inline bool operator==(const XLRow& lhs, const XLRow& rhs) { return XLRow::isEqual(lhs, rhs); }
674
+
675
+ /**
676
+ * @brief
677
+ * @param lhs
678
+ * @param rhs
679
+ * @return
680
+ */
681
+ inline bool operator!=(const XLRow& lhs, const XLRow& rhs) { return !(lhs.m_rowNode == rhs.m_rowNode); }
682
+
683
+ /**
684
+ * @brief
685
+ * @param lhs
686
+ * @param rhs
687
+ * @return
688
+ */
689
+ inline bool operator<(const XLRow& lhs, const XLRow& rhs) { return XLRow::isLessThan(lhs, rhs); }
690
+
691
+ /**
692
+ * @brief
693
+ * @param lhs
694
+ * @param rhs
695
+ * @return
696
+ */
697
+ inline bool operator>(const XLRow& lhs, const XLRow& rhs) { return (rhs < lhs); }
698
+
699
+ /**
700
+ * @brief
701
+ * @param lhs
702
+ * @param rhs
703
+ * @return
704
+ */
705
+ inline bool operator<=(const XLRow& lhs, const XLRow& rhs) { return !(lhs > rhs); }
706
+
707
+ /**
708
+ * @brief
709
+ * @param lhs
710
+ * @param rhs
711
+ * @return
712
+ */
713
+ inline bool operator>=(const XLRow& lhs, const XLRow& rhs) { return !(lhs < rhs); }
714
+
715
+ } // namespace OpenXLSX
716
+
717
+ #ifdef _MSC_VER // conditionally enable MSVC specific pragmas to avoid other compilers warning about unknown pragmas
718
+ # pragma warning(pop)
719
+ #endif // _MSC_VER
720
+
721
+ #endif // OPENXLSX_XLROW_HPP