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.
Files changed (449) hide show
  1. package/NitroXlsx.podspec +26 -27
  2. package/Package.swift +31 -10
  3. package/README.md +21 -9
  4. package/android/CMakeLists.txt +20 -27
  5. package/cpp/HybridNitroXlsx.cpp +25 -1
  6. package/cpp/HybridXlsxCellFormat.cpp +46 -146
  7. package/cpp/HybridXlsxCellFormat.hpp +9 -41
  8. package/cpp/HybridXlsxConditionalFormat.cpp +4 -1
  9. package/cpp/HybridXlsxConditionalFormats.cpp +5 -1
  10. package/cpp/HybridXlsxWorkbook.cpp +38 -8
  11. package/cpp/HybridXlsxWorkbook.hpp +10 -1
  12. package/cpp/HybridXlsxWorksheet.cpp +422 -141
  13. package/cpp/HybridXlsxWorksheet.hpp +4 -1
  14. package/cpp/XlsxCacheDir.cpp +25 -2
  15. package/cpp/XlsxCacheDir.hpp +3 -1
  16. package/cpp/XlsxCellStyle.hpp +360 -0
  17. package/cpp/XlsxJson.cpp +29 -8
  18. package/package.json +2 -2
  19. package/scripts/run-cpp-tests.sh +1 -1
  20. package/scripts/sync-openxlsx-headers.sh +34 -0
  21. package/src/__mocks__/react-native-nitro-modules.ts +523 -20
  22. package/src/__tests__/index.test.ts +124 -16
  23. package/src/index.ts +13 -13
  24. package/thirdparty/OpenXLSX/.clang-format +118 -0
  25. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  26. package/thirdparty/OpenXLSX/.gitignore +130 -0
  27. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  28. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  29. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  30. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  31. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  32. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  33. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  34. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  35. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  36. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  37. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  38. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  39. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  40. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  41. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  42. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  43. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  44. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  45. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  46. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  47. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  48. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  49. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  50. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  51. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  52. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  53. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  54. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  55. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  56. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  57. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  58. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  59. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  60. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  61. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  62. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  63. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  64. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  65. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  66. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  67. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  68. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  69. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  70. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  71. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  72. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  73. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  74. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  75. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  76. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/IZipArchive.hpp +361 -0
  77. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/OpenXLSX-Exports.hpp +12 -0
  78. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCell.hpp +367 -0
  79. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellIterator.hpp +252 -0
  80. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellRange.hpp +223 -0
  81. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellReference.hpp +317 -0
  82. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellValue.hpp +793 -0
  83. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLColor.hpp +232 -0
  84. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLColumn.hpp +159 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCommandQuery.hpp +228 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLComments.hpp +270 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLConstants.hpp +18 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLContentTypes.hpp +264 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDateTime.hpp +175 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDocument.hpp +505 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDrawing.hpp +452 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLException.hpp +161 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLFormula.hpp +375 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLIterator.hpp +40 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLMergeCells.hpp +216 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLProperties.hpp +348 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRelationships.hpp +348 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRow.hpp +721 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRowData.hpp +488 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLSharedStrings.hpp +204 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLSheet.hpp +1640 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLStyles.hpp +2390 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLTables.hpp +132 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLWorkbook.hpp +404 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlData.hpp +283 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlFile.hpp +194 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlParser.hpp +282 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlParserForwardDeclarations.hpp +85 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLZipArchive.hpp +232 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/LibZip.hpp +447 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/OpenXLSXFileSystemTools.hpp +207 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/Zippy.hpp +1375 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  123. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  124. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  125. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  126. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  127. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  128. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  129. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  130. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  131. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  132. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  133. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  134. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  135. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  136. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  137. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  138. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  139. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  140. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  141. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  142. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  143. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  144. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  145. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  146. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  147. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  148. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  149. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  150. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  151. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  152. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  153. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  154. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  155. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  156. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  157. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  158. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  159. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  160. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  161. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  162. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  163. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  164. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  165. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  166. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  167. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  168. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  169. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  170. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  171. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  172. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  173. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  174. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  175. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  176. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  177. package/thirdparty/OpenXLSX/README.md +1279 -0
  178. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  179. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  180. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  181. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  182. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  183. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  184. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  185. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  186. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  187. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  188. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  189. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  190. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  191. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  192. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  193. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  194. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  195. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  196. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  197. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  198. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  199. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  200. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  201. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  202. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  203. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  204. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  205. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  206. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  207. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  208. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  209. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  210. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  211. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  212. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  213. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  214. package/thirdparty/README.md +46 -0
  215. package/thirdparty/miniz/.clang-format +47 -0
  216. package/thirdparty/miniz/.travis.yml +2 -0
  217. package/thirdparty/miniz/CMakeLists.txt +333 -0
  218. package/thirdparty/miniz/CMakePresets.json +31 -0
  219. package/thirdparty/miniz/ChangeLog.md +272 -0
  220. package/thirdparty/miniz/Config.cmake.in +1 -0
  221. package/thirdparty/miniz/LICENSE +22 -0
  222. package/thirdparty/miniz/amalgamate.sh +57 -0
  223. package/thirdparty/miniz/examples/example1.c +105 -0
  224. package/thirdparty/miniz/examples/example2.c +164 -0
  225. package/thirdparty/miniz/examples/example3.c +269 -0
  226. package/thirdparty/miniz/examples/example4.c +102 -0
  227. package/thirdparty/miniz/examples/example5.c +327 -0
  228. package/thirdparty/miniz/examples/example6.c +189 -0
  229. package/thirdparty/miniz/meson.build +21 -0
  230. package/thirdparty/miniz/miniz.c +646 -0
  231. package/thirdparty/miniz/miniz.h +615 -0
  232. package/thirdparty/miniz/miniz.pc.in +13 -0
  233. package/thirdparty/miniz/miniz_common.h +89 -0
  234. package/thirdparty/miniz/miniz_export.h +20 -0
  235. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  236. package/thirdparty/miniz/miniz_tdef.h +199 -0
  237. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  238. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  239. package/thirdparty/miniz/miniz_zip.c +4895 -0
  240. package/thirdparty/miniz/miniz_zip.h +454 -0
  241. package/thirdparty/miniz/readme.md +46 -0
  242. package/thirdparty/miniz/test.sh +36 -0
  243. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  244. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  245. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  246. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  247. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  248. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  249. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  250. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  251. package/thirdparty/miniz/tests/main.cpp +185 -0
  252. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  253. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  254. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  255. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  256. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  257. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  258. package/thirdparty/miniz/tests/timer.cpp +152 -0
  259. package/thirdparty/miniz/tests/timer.h +40 -0
  260. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  261. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  262. package/thirdparty/miniz/tests/zip.dict +9 -0
  263. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  264. package/thirdparty/pugixml/.codecov.yml +7 -0
  265. package/thirdparty/pugixml/.gitattributes +1 -0
  266. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  267. package/thirdparty/pugixml/LICENSE.md +24 -0
  268. package/thirdparty/pugixml/Makefile +98 -0
  269. package/thirdparty/pugixml/README.md +81 -0
  270. package/thirdparty/pugixml/SECURITY.md +9 -0
  271. package/thirdparty/pugixml/appveyor.yml +50 -0
  272. package/thirdparty/pugixml/docs/config.adoc +7 -0
  273. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  274. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  275. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  276. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  277. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  278. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  279. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  280. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  281. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  282. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  283. package/thirdparty/pugixml/docs/manual.html +6395 -0
  284. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  285. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  286. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  287. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  288. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  289. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  290. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  291. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  292. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  293. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  294. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  295. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  296. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  297. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  298. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  299. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  300. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  301. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  302. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  303. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  304. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  305. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  306. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  307. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  308. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  309. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  310. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  311. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  312. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  313. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  314. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  315. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  316. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  317. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  318. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  319. package/thirdparty/pugixml/readme.txt +50 -0
  320. package/thirdparty/pugixml/scripts/archive.py +54 -0
  321. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  322. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  323. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  324. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  325. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  326. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  327. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  328. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  329. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  330. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  331. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  332. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  333. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  334. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  335. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  336. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  337. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  338. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  339. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  340. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  341. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  342. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  343. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  344. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  345. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  346. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  347. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  348. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  349. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  350. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  351. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  352. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  353. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  354. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  355. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  356. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  357. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  358. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  359. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  360. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  361. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  362. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  363. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  364. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  365. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  366. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  367. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  368. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  369. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  370. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  371. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  372. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  373. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  374. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  375. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  376. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  377. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  378. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  379. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  380. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  381. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  382. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  383. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  384. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  385. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  386. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  387. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  388. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  389. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  390. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  391. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  392. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  393. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  394. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  395. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  396. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  397. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  398. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  399. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  400. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  401. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  402. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  403. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  404. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  405. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  406. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  407. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  408. package/thirdparty/pugixml/tests/main.cpp +218 -0
  409. package/thirdparty/pugixml/tests/test.cpp +220 -0
  410. package/thirdparty/pugixml/tests/test.hpp +175 -0
  411. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  412. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  413. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  414. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  415. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  416. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  417. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  418. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  419. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  420. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  421. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  422. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  423. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  424. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  425. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  426. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  427. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  428. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  429. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  430. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  431. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  432. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  433. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  434. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  435. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  436. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  437. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  438. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  439. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  440. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  441. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  442. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  443. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  444. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  445. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  446. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  447. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  448. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  449. package/scripts/prepare-openxlsx.js +0 -126
@@ -0,0 +1,530 @@
1
+ # GNU Makefile for OpenXLSX modules & demos
2
+ # Version: 2025-08-26 15:15 CEST
3
+ # $(error 2025-08-16 15:30 CEST: With recent changes to the project configuration, the GNU Makefile is currently non-functional)
4
+
5
+ $(info 2025-08-26 Temporary override of options (only supported configuration is with libpugixml and libzip preinstalled on the build system))
6
+ $(info ___________It remains TBD whether it will be possible (or is even desired) to pull in dependencies from the GNU Makefile)
7
+ OPENXLSX_ENABLE_LIBPUGIXML=ON
8
+ OPENXLSX_ENABLE_LIBZIP=ON
9
+ OPENXLSX_ENABLE_LIBBOOST_NOWIDE=ON
10
+ OPENXLSX_SHARED_LIBRARY=OFF
11
+ $(info OPENXLSX_ENABLE_LIBPUGIXML $(OPENXLSX_ENABLE_LIBPUGIXML))
12
+ $(info OPENXLSX_ENABLE_LIBZIP $(OPENXLSX_ENABLE_LIBZIP))
13
+ $(info OPENXLSX_ENABLE_LIBBOOST_NOWIDE $(OPENXLSX_ENABLE_LIBBOOST_NOWIDE))
14
+ $(info OPENXLSX_SHARED_LIBRARY $(OPENXLSX_SHARED_LIBRARY))
15
+
16
+ # Makefile option OPENXLSX_ENABLE_LIBPUGIXML: Scripts/make-gnu.sh OPENXLSX_ENABLE_LIBPUGIXML=ON
17
+ ifeq ("$(OPENXLSX_ENABLE_LIBPUGIXML)", "ON")
18
+ # use libpugixml
19
+ USE_LIBPUGIXML=yes
20
+ else
21
+ # use pugixml in header-only version shipped with OpenXLSX
22
+ OPENXLSX_ENABLE_LIBPUGIXML=OFF
23
+ USE_LIBPUGIXML=no
24
+ endif
25
+
26
+ # Makefile option OPENXLSX_ENABLE_LIBZIP: Scripts/make-gnu.sh OPENXLSX_ENABLE_LIBZIP=ON (default)
27
+ ifeq ("$(OPENXLSX_ENABLE_LIBZIP)", "OFF")
28
+ # use zippy
29
+ USE_LIBZIP=no
30
+ else
31
+ # use libzip
32
+ OPENXLSX_ENABLE_LIBZIP=ON
33
+ USE_LIBZIP=yes
34
+ endif
35
+
36
+ # Makefile option OPENXLSX_FORCE_NOWIDE: Scripts/make-gnu.sh OPENXLSX_FORCE_NOWIDE=ON
37
+ ifeq ("$(OPENXLSX_FORCE_NOWIDE)", "ON")
38
+ USE_NOWIDE_DEFAULT=yes
39
+ else
40
+ OPENXLSX_FORCE_NOWIDE=OFF
41
+ USE_NOWIDE_DEFAULT=no
42
+ endif
43
+
44
+ # Makefile option OPENXLSX_ENABLE_LIBBOOST_NOWIDE: Scripts/make-gnu.sh OPENXLSX_ENABLE_LIBBOOST_NOWIDE=ON
45
+ ifeq ("$(OPENXLSX_ENABLE_LIBBOOST_NOWIDE)", "ON")
46
+ # use libpugixml
47
+ USE_LIBBOOST_NOWIDE=yes
48
+ else
49
+ # use pugixml in header-only version shipped with OpenXLSX
50
+ OPENXLSX_ENABLE_LIBBOOST_NOWIDE=OFF
51
+ USE_LIBBOOST_NOWIDE=no
52
+ endif
53
+
54
+ # Makefile option OPENXLSX_SHARED_LIBRARY: Scripts/make-gnu.sh OPENXLSX_SHARED_LIBRARY=ON
55
+ ifeq ("$(OPENXLSX_SHARED_LIBRARY)", "ON")
56
+ # NOTE: Currently unsupported in GNU Makefile:
57
+ # build shared library
58
+ USE_SHARED_LIBRARY=yes
59
+ else
60
+ # build static library (default & only supported option in GNU Makefile)
61
+ OPENXLSX_SHARED_LIBRARY=OFF
62
+ USE_SHARED_LIBRARY=no
63
+ endif
64
+
65
+ # version tags
66
+ OPENXLSX_MAJOR_VERSION=0
67
+ OPENXLSX_MINOR_VERSION=4
68
+ OPENXLSX_MICRO_VERSION=2
69
+
70
+ # NOTE: lib and library are available as aliases for OpenXLSX, to build the static library file
71
+ TARGETS=OpenXLSX Demo1 Demo2 Demo3 Demo4 Demo5 Demo6 Demo7 Demo8 Demo9 Demo10
72
+ ADDITIONAL_TARGETS=Demo1A
73
+
74
+ DEMOS_SRC_DIR=Examples
75
+ BIN_DIR=output
76
+
77
+ CC=gcc
78
+ CXX=g++
79
+
80
+ # /usr/bin/ar: create archive without symbol table
81
+ AR=ar
82
+ # /usr/bin/ranlib: add symbol table to archive created with ar
83
+ RANLIB=ranlib
84
+
85
+
86
+ OPTIMIZATION_FLAGS=
87
+ #OPTIMIZATION_FLAGS=-O3
88
+
89
+ # === BEGIN: Detect OS platform based on gcc compiler defines ===
90
+ # Actual detection command:
91
+ DETECT_CMD="echo | $(CC) -dM -E -"
92
+
93
+ # Test commands to "simulate" a platform
94
+ # DETECT_CMD="echo \"\#define WIN32 1\""
95
+ # DETECT_CMD="echo \"\#define _WIN32 1\""
96
+ # DETECT_CMD="echo \"\#define __WIN32__ 1\""
97
+ # DETECT_CMD="echo \"\#define _WIN64 1\""
98
+ # DETECT_CMD="printf '\#define WIN32 1\n\#define _WIN32 1\n\#define __WIN32__ 1\n\#define _WIN64 1'" # test all defines together with line breaks
99
+ # DETECT_CMD="echo \"\#define __linux__ 1\""
100
+ # DETECT_CMD="echo \"\#define __CYGWIN__ 1\""
101
+
102
+ __linux__ := $(shell "$(DETECT_CMD)" | grep "\b__linux__\b")
103
+ ifdef __linux__
104
+ Linux=yes
105
+ else
106
+ Linux=no
107
+ endif
108
+
109
+ WIN32 := $(shell "$(DETECT_CMD)" | grep "\bWIN32\b")
110
+ _WIN32 := $(shell "$(DETECT_CMD)" | grep "\b_WIN32\b")
111
+ __WIN32__ := $(shell "$(DETECT_CMD)" | grep "\b__WIN32__\b")
112
+ _WIN64 := $(shell "$(DETECT_CMD)" | grep "\b_WIN64\b")
113
+ ifdef WIN32
114
+ Windows=yes
115
+ else ifdef _WIN32
116
+ Windows=yes
117
+ else ifdef __WIN32__
118
+ Windows=yes
119
+ else ifdef _WIN64
120
+ Windows=yes
121
+ else
122
+ Windows=no
123
+ endif
124
+
125
+ __CYGWIN__ := $(shell "$(DETECT_CMD)" | grep "\b__CYGWIN__\b")
126
+ ifdef __CYGWIN__
127
+ Cygwin=yes
128
+ else
129
+ Cygwin=no
130
+ endif
131
+ # === END: detect OS platform based on gcc compiler defines ===
132
+
133
+ OPENXLSX_DIR=OpenXLSX
134
+ SRC_DIR=sources
135
+ INCLUDE_DIR=headers
136
+ OBJ_DIR=obj
137
+ STATIC_LIBRARY=libOpenXLSX.a
138
+
139
+ USE_NOWIDE=$(USE_NOWIDE_DEFAULT)
140
+ ifeq ("$(Windows)", "yes")
141
+ # enable nowide on windows. CAUTION: do not append this comment to the variable assignment, it will break the ifeq check below
142
+ USE_NOWIDE=yes
143
+ endif
144
+
145
+ # SHARED_SUBDIR=shared
146
+ EXTERNAL_SUBDIR=external
147
+ NOWIDE_SUBDIR=$(EXTERNAL_SUBDIR)/nowide
148
+ PUGIXML_SUBDIR=$(EXTERNAL_SUBDIR)/pugixml
149
+ ZIPPY_SUBDIR=$(EXTERNAL_SUBDIR)/zippy
150
+
151
+ # library / utility objects
152
+ # OBJS_LICENSE=license.o
153
+ # OBJS_SHARED=$(OBJS_LICENSE)
154
+ OBJS_PUGIXML= # used as header-only module OR as system library (if USE_LIBPUGIXML=yes)
155
+ OBJS_ZIPPY= # header-only module
156
+ OBJS_OPENXLSX=XLCell.o XLCellIterator.o XLCellRange.o XLCellReference.o XLCellValue.o XLColor.o XLColumn.o XLComments.o XLContentTypes.o XLDateTime.o XLDocument.o XLDrawing.o XLFormula.o XLMergeCells.o XLProperties.o XLRelationships.o XLRow.o XLRowData.o XLSharedStrings.o XLSheet.o XLStyles.o XLTables.o XLWorkbook.o XLXmlData.o XLXmlFile.o XLXmlParser.o XLZipArchive.o
157
+
158
+ # create a version of OBJS_OPENXLSX that already has the correct prefix so that it can be used for linking without further modification
159
+ OBJS_OPENXLSX_PREFIXED=$(addprefix $(OBJ_DIR)/$(OPENXLSX_DIR)/,$(OBJS_OPENXLSX))
160
+
161
+ # OBJS_DEMOS=$(OBJS_OPENXLSX_PREFIXED) # no longer needed - using static library instead
162
+ OBJS_DEMOS=$(BIN_DIR)/$(STATIC_LIBRARY) # use static library for linking demos
163
+
164
+ ifeq ("$(USE_LIBPUGIXML)", "yes")
165
+ LDLIBS_PUGIXML=-lpugixml
166
+ ENABLE_LIBPUGIXML=-DUSE_LIBPUGIXML
167
+ INCLUDE_DIR_PUGIXML= # do not identify OpenXLSX-shipped pugixml path
168
+ else
169
+ INCLUDE_DIR_PUGIXML= -I$(OPENXLSX_DIR)/$(PUGIXML_SUBDIR)
170
+ endif
171
+ ifeq ("$(USE_LIBZIP)", "yes")
172
+ ENABLE_LIBZIP=-DUSE_LIBZIP
173
+ LDLIBS_LIBZIP=-lzip
174
+ endif
175
+ ifeq ("$(USE_NOWIDE)", "yes")
176
+ ifeq ("$(USE_LIBBOOST_NOWIDE)", "yes")
177
+ ENABLE_NOWIDE=-DENABLE_NOWIDE -DENABLE_LIBBOOST_NOWIDE
178
+ else
179
+ ENABLE_NOWIDE=-DENABLE_NOWIDE
180
+ endif
181
+ endif
182
+ PROJECT_FLAGS=$(ENABLE_LIBPUGIXML) $(ENABLE_LIBZIP) $(ENABLE_NOWIDE)
183
+
184
+ # additional include directories for 1) OPENXLSX project headers and 2) external nowide (parent) folder
185
+ ADDITIONAL_INCLUDE_FLAGS=-I$(OPENXLSX_DIR) -I$(OPENXLSX_DIR)/$(EXTERNAL_SUBDIR)
186
+
187
+ # application objects
188
+
189
+ # Demo0 is a placeholder for test programs - if used, has to be explicitly provided as build target (not included in defaults)
190
+ OBJS_DEMO0=Demo0.o
191
+ OBJS_OPENXLSX_DEMO0=$(OBJS_DEMOS)
192
+ LDLIBS_DEMO0=
193
+
194
+ OBJS_DEMO1=Demo1.o
195
+ OBJS_OPENXLSX_DEMO1=$(OBJS_DEMOS)
196
+ LDLIBS_DEMO1=
197
+
198
+ OBJS_DEMO1A=Demo1A.o
199
+ OBJS_OPENXLSX_DEMO1A=$(OBJS_DEMOS)
200
+ LDLIBS_DEMO1A=
201
+
202
+ OBJS_DEMO2=Demo2.o
203
+ OBJS_OPENXLSX_DEMO2=$(OBJS_DEMOS)
204
+ LDLIBS_DEMO2=
205
+
206
+ OBJS_DEMO3=Demo3.o
207
+ OBJS_OPENXLSX_DEMO3=$(OBJS_DEMOS)
208
+ LDLIBS_DEMO3=
209
+
210
+ OBJS_DEMO4=Demo4.o
211
+ OBJS_OPENXLSX_DEMO4=$(OBJS_DEMOS)
212
+ LDLIBS_DEMO4=
213
+
214
+ OBJS_DEMO5=Demo5.o
215
+ OBJS_OPENXLSX_DEMO5=$(OBJS_DEMOS)
216
+ LDLIBS_DEMO5=
217
+
218
+ OBJS_DEMO6=Demo6.o
219
+ OBJS_OPENXLSX_DEMO6=$(OBJS_DEMOS)
220
+ LDLIBS_DEMO6=
221
+
222
+ OBJS_DEMO7=Demo7.o
223
+ OBJS_OPENXLSX_DEMO7=$(OBJS_DEMOS)
224
+ LDLIBS_DEMO7=
225
+
226
+ OBJS_DEMO8=Demo8.o
227
+ OBJS_OPENXLSX_DEMO8=$(OBJS_DEMOS)
228
+ LDLIBS_DEMO8=
229
+
230
+ OBJS_DEMO9=Demo9.o
231
+ OBJS_OPENXLSX_DEMO9=$(OBJS_DEMOS)
232
+ LDLIBS_DEMO9=
233
+
234
+ OBJS_DEMO10=Demo10.o
235
+ OBJS_OPENXLSX_DEMO10=$(OBJS_DEMOS)
236
+ LDLIBS_DEMO10=
237
+
238
+ SANITIZE_FLAGS=
239
+ # SANITIZE_FLAGS=-fsanitize=address
240
+ # SANITIZE_FLAGS=-fsanitize=address -fsanitize=leak
241
+ SANITIZE_LIBS=
242
+ # SANITIZE_LIBS=-llsan
243
+
244
+ # 2024-08-18 warning state:
245
+ # misleading-indentation: 0 warnings
246
+ # sign-compare: 0 warnings
247
+ # unknown-pragmas: 0 (disabled warning about previous 144 lines upsetting gcc/g++ by pragma)
248
+ # unused-function: 3 (disabled by pragma)
249
+ # OpenXLSX/sources/XLProperties.cpp: std::vector<std::string> headingPairsCategoriesStrings(XMLNode docNode)
250
+ # OpenXLSX/sources/XLDocument.cpp: bool fileExists(const std::string& fileName)
251
+ # bool isDirectory(const std::string& fileName)
252
+ ENABLED_WARNING_FLAGS=-Wformat -Wformat-signedness -Wall -Wpedantic -Wextra
253
+ DISABLED_WARNING_FLAGS=
254
+
255
+ GENERIC_FLAGS=$(ADDITIONAL_INCLUDE_FLAGS) $(PROJECT_FLAGS) -fno-common $(SANITIZE_FLAGS) $(OPTIMIZATION_FLAGS) $(ENABLED_WARNING_FLAGS) $(DISABLED_WARNING_FLAGS)
256
+
257
+ CPPFLAGS=$(GENERIC_FLAGS) -std=c++17
258
+ # CPPFLAGS=$(GENERIC_FLAGS) -std=c++17 -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700
259
+
260
+ LDFLAGS=$(SANITIZE_FLAGS)
261
+ # LDFLAGS=-fno-common
262
+
263
+ # TEST: truncate binary to actually used code (https://gcc.gnu.org/onlinedocs/gnat_ugn/Compilation-options.html)
264
+ # GENERIC_FLAGS+= -ffunction-sections -fdata-sections
265
+ # LDFLAGS+= -Wl,--gc-sections
266
+
267
+
268
+ # precompiled libs go here
269
+ LDLIBS=$(SANITIZE_LIBS) $(LDLIBS_PUGIXML) $(LDLIBS_LIBZIP)
270
+ # LDLIBS=-lrt -pthread -lboost_program_options $(SANITIZE_LIBS) # example to add libraries if needed
271
+
272
+
273
+ ## additional tools for text substitution:
274
+ # call tools like so:
275
+ # VAR = MixedCaseText
276
+ # LOWER_VAR = $(call lc,$(VAR))
277
+ # create all lowercase variable:
278
+ # lc = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
279
+ # create all uppercase variable:
280
+ uc = $(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,$(subst f,F,$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,$(subst k,K,$(subst l,L,$(subst m,M,$(subst n,N,$(subst o,O,$(subst p,P,$(subst q,Q,$(subst r,R,$(subst s,S,$(subst t,T,$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,$(subst y,Y,$(subst z,Z,$1))))))))))))))))))))))))))
281
+
282
+
283
+ ## gnu make override to define the default make directive, only takes a single target
284
+ .DEFAULT_GOAL := default
285
+ default: $(TARGETS)
286
+
287
+ all: $(TARGETS) $(ADDITIONAL_TARGETS)
288
+
289
+ # the $(NOOP) rules are only needed for the dependency / forward to $(BIN_DIR)
290
+ Demo0: $(BIN_DIR)/Demo0
291
+ $(NOOP)
292
+ Demo1: $(BIN_DIR)/Demo1
293
+ $(NOOP)
294
+ Demo1A: $(BIN_DIR)/Demo1A
295
+ $(NOOP)
296
+ Demo2: $(BIN_DIR)/Demo2
297
+ $(NOOP)
298
+ Demo3: $(BIN_DIR)/Demo3
299
+ $(NOOP)
300
+ Demo4: $(BIN_DIR)/Demo4
301
+ $(NOOP)
302
+ Demo5: $(BIN_DIR)/Demo5
303
+ $(NOOP)
304
+ Demo6: $(BIN_DIR)/Demo6
305
+ $(NOOP)
306
+ Demo7: $(BIN_DIR)/Demo7
307
+ $(NOOP)
308
+ Demo8: $(BIN_DIR)/Demo8
309
+ $(NOOP)
310
+ Demo9: $(BIN_DIR)/Demo9
311
+ $(NOOP)
312
+ Demo10: $(BIN_DIR)/Demo10
313
+ $(NOOP)
314
+
315
+ # re-direct from aliases
316
+ lib: OpenXLSX
317
+ library: OpenXLSX
318
+
319
+ # static library target
320
+ OpenXLSX: $(BIN_DIR)/$(STATIC_LIBRARY)
321
+
322
+ # delete existing file, create static library archive file & add symbol table to archive
323
+ # NOTE: if existing library file is not explicitly deleted, ar will fail to update a modified object file
324
+ $(BIN_DIR)/$(STATIC_LIBRARY): $(OBJS_OPENXLSX_PREFIXED) | $(BIN_DIR)
325
+ rm -f $@ # explicitly delete existing library file
326
+ $(AR) qc $@ $(addprefix $(OBJ_DIR)/$(OPENXLSX_DIR)/,$(OBJS_OPENXLSX))
327
+ $(RANLIB) $@
328
+
329
+ # complex rule for BIN_DIR targets: include objects from OBJS_<target> and libraries from LDLIBS_<target>
330
+ .SECONDEXPANSION:
331
+ $(BIN_DIR)/%: $$(addprefix $(OBJ_DIR)/,$$(OBJS_$$(call uc,$$*))) $$(OBJS_OPENXLSX_$$(call uc,$$*)) | $(BIN_DIR)
332
+ $(CXX) $(LDFLAGS) $^ $(LDLIBS) $(LDLIBS_$(call uc,$*)) -o $@
333
+
334
+ # rule for .cpp files in DEMOS_SRC_DIR
335
+ $(OBJ_DIR)/%.o: $(addprefix $(DEMOS_SRC_DIR)/,%.cpp) | $(OBJ_DIR) $(OPENXLSX_DIR)/OpenXLSX-Exports.hpp
336
+ $(CXX) $(CPPFLAGS) -I$(OPENXLSX_DIR)/$(INCLUDE_DIR) -I$(OPENXLSX_DIR)/$(NOWIDE_SUBDIR) -c $< -o $@
337
+
338
+ # rule for OpenXLSX .cpp files
339
+ $(OBJ_DIR)/$(OPENXLSX_DIR)/%.o: $(OPENXLSX_DIR)/$(SRC_DIR)/%.cpp | $(OBJ_DIR) $(OBJ_DIR)/$(OPENXLSX_DIR)/ $(OPENXLSX_DIR)/OpenXLSX-Exports.hpp
340
+ $(CXX) $(CPPFLAGS) -I$(OPENXLSX_DIR)/$(INCLUDE_DIR) -I$(OPENXLSX_DIR)/$(NOWIDE_SUBDIR) $(INCLUDE_DIR_PUGIXML) -I$(OPENXLSX_DIR)/$(ZIPPY_SUBDIR) -c $< -o $@
341
+
342
+ # rule for nowide .cpp files: N/A, as nowide is header-only
343
+
344
+ # rule for pugixml .cpp files: N/A, as pugixml is used as header only
345
+ $(OBJ_DIR)/$(PUGIXML_SUBDIR)/%.o: $(OPENXLSX_DIR)/$(PUGIXML_SUBDIR)/%.cpp | $(OBJ_DIR) $(OBJ_DIR)/$(PUGIXML_SUBDIR)/
346
+ $(CXX) $(CPPFLAGS) $(INCLUDE_DIR_PUGIXML) -c $< -o $@
347
+
348
+ # rule for zippy .cpp files: N/A, as zippy is header only
349
+
350
+ $(OPENXLSX_DIR)/OpenXLSX-Exports.hpp:
351
+ ifeq ("$(USE_SHARED_LIBRARY)", "yes")
352
+ cp gnu-make-crutch/OpenXLSX-Exports-shared.hpp $@
353
+ else
354
+ cp gnu-make-crutch/OpenXLSX-Exports-static.hpp $@
355
+ endif
356
+
357
+ # # rule for shared .cpp files
358
+ # $(OBJ_DIR)/$(SHARED_SUBDIR)/%.o: $(OPENXLSX_DIR)/$(SRC_DIR)/$(SHARED_SUBDIR)/%.cpp | $(OBJ_DIR) $(OBJ_DIR)/$(SHARED_SUBDIR)/
359
+ # $(CXX) $(CPPFLAGS) -I$(INCLUDE_DIR)/$(SHARED_SUBDIR) -c $< -o $@
360
+
361
+
362
+ # create BIN_DIR if not existing
363
+ $(BIN_DIR):
364
+ mkdir $@
365
+
366
+ # create OBJ_DIR if not existing
367
+ $(OBJ_DIR):
368
+ mkdir $@
369
+
370
+ # $(OBJ_DIR)/$(SHARED_SUBDIR)/:
371
+ # mkdir $@
372
+
373
+ $(OBJ_DIR)/$(OPENXLSX_DIR)/:
374
+ mkdir $@
375
+
376
+ $(OBJ_DIR)/$(PUGIXML_SUBDIR)/:
377
+ mkdir $@
378
+
379
+ $(OBJ_DIR)/$(ZIPPY_SUBDIR)/:
380
+ mkdir $@
381
+
382
+ # .SECONDARY with no prerequisites causes all targets to be treated
383
+ # as secondary (i.e., no target is removed because it is considered
384
+ # intermediate).
385
+ .SECONDARY:
386
+
387
+ # indicate all rules without target output
388
+ .PHONY: default all clean cleanObjects cleanTargets cleanCrutch echo lib library OpenXLSX
389
+
390
+ clean: cleanObjects cleanTargets cleanCrutch
391
+
392
+ cleanObjects:
393
+ rm -f $(addprefix $(OBJ_DIR)/,$(OBJS_DEMO0) $(OBJS_DEMO1) $(OBJS_DEMO2) $(OBJS_DEMO3) $(OBJS_DEMO4) $(OBJS_DEMO5) $(OBJS_DEMO6) $(OBJS_DEMO7) $(OBJS_DEMO8) $(OBJS_DEMO9) $(OBJS_DEMO10)) \
394
+ $(BIN_DIR)/$(STATIC_LIBRARY) \
395
+ $(OBJS_OPENXLSX_PREFIXED) \
396
+ $(addprefix $(OBJ_DIR)/$(PUGIXML_SUBDIR)/,$(OBJS_PUGIXML)) \
397
+ $(addprefix $(OBJ_DIR)/$(ZIPPY_SUBDIR)/,$(OBJS_ZIPPY))
398
+ # $(addprefix $(OBJ_DIR)/$(SHARED_SUBDIR)/,$(OBJS_SHARED))
399
+
400
+ cleanTargets:
401
+ rm -f $(addprefix $(BIN_DIR)/,Demo0) $(addprefix $(BIN_DIR)/,$(TARGETS)) $(addprefix $(BIN_DIR)/,$(ADDITIONAL_TARGETS))
402
+
403
+ cleanCrutch:
404
+ rm $(OPENXLSX_DIR)/OpenXLSX-Exports.hpp 2>/dev/null
405
+
406
+
407
+ # have a look at the established configuration
408
+ echo:
409
+ @echo "OpenXLSX Makefile"
410
+ @echo "----------------------------------------------"
411
+ @echo "OpenXLSX library version: $(OPENXLSX_MAJOR_VERSION).$(OPENXLSX_MINOR_VERSION).$(OPENXLSX_MICRO_VERSION)"
412
+ @echo
413
+ @echo "Make options:"
414
+ @echo " OPENXLSX_ENABLE_LIBPUGIXML: $(OPENXLSX_ENABLE_LIBPUGIXML)"
415
+ @echo " OPENXLSX_ENABLE_LIBZIP: $(OPENXLSX_ENABLE_LIBZIP)"
416
+ @echo " OPENXLSX_FORCE_NOWIDE: $(OPENXLSX_FORCE_NOWIDE)"
417
+ @echo " OPENXLSX_ENABLE_LIBBOOST_NOWIDE: $(OPENXLSX_ENABLE_LIBBOOST_NOWIDE)"
418
+ @echo " OPENXLSX_SHARED_LIBRARY: $(OPENXLSX_SHARED_LIBRARY)"
419
+ @echo "Resulting Makefile flags:"
420
+ @echo " USE_LIBPUGIXML: $(USE_LIBPUGIXML)"
421
+ @echo " USE_LIBZIP: $(USE_LIBZIP)"
422
+ @echo " USE_NOWIDE_DEFAULT: $(USE_NOWIDE_DEFAULT)"
423
+ @echo " USE_LIBBOOST_NOWIDE: $(USE_LIBBOOST_NOWIDE)"
424
+ @echo " USE_SHARED_LIBRARY: $(USE_SHARED_LIBRARY) (currently unsupported, GNU Makefile will always build static library)"
425
+ @echo
426
+ @echo "TARGETS: $(TARGETS)"
427
+ @echo "ADDITIONAL_TARGETS: $(ADDITIONAL_TARGETS)"
428
+ @echo "DEMOS_SRC_DIR: $(DEMOS_SRC_DIR)"
429
+ @echo "BIN_DIR: $(BIN_DIR)"
430
+ @echo
431
+ @echo "CC : $(CC)"
432
+ @echo "CXX : $(CXX)"
433
+ @echo "AR : $(AR)"
434
+ @echo "RANLIB: $(RANLIB)"
435
+ @echo
436
+ @echo "OPTIMIZATION_FLAGS: $(OPTIMIZATION_FLAGS)"
437
+ @echo
438
+ @echo "Platform detection variables:"
439
+ @echo "-----------------------------"
440
+ @echo 'DETECT_CMD: $(DETECT_CMD)'
441
+ @echo
442
+ @echo "__linux__ : $(__linux__)"
443
+ @echo "WIN32 : $(WIN32)"
444
+ @echo "_WIN32 : $(_WIN32)"
445
+ @echo "__WIN32__ : $(__WIN32__)"
446
+ @echo "_WIN64 : $(_WIN64)"
447
+ @echo "__CYGWIN__: $(__CYGWIN__)"
448
+ @echo
449
+ @echo "Platform detection results:"
450
+ @echo "---------------------------"
451
+ @echo "Linux : $(Linux)"
452
+ @echo "Windows: $(Windows)"
453
+ @echo "Cygwin : $(Cygwin)"
454
+ @echo
455
+ @echo "OpenXLSX project configuration:"
456
+ @echo "-------------------------------"
457
+ @echo "USE_NOWIDE: $(USE_NOWIDE) (derived from Windows: $(Windows) and OPENXLSX_FORCE_NOWIDE: $(OPENXLSX_FORCE_NOWIDE))"
458
+ @echo
459
+ @echo "OPENXLSX_DIR: $(OPENXLSX_DIR)"
460
+ @echo "SRC_DIR: $(SRC_DIR)"
461
+ @echo "INCLUDE_DIR: $(INCLUDE_DIR)"
462
+ @echo "OBJ_DIR: $(OBJ_DIR)"
463
+ @echo "STATIC_LIBRARY: $(STATIC_LIBRARY)"
464
+ @echo
465
+ @echo "ENABLE_LIBPUGIXML: $(ENABLE_LIBPUGIXML)"
466
+ @echo "ENABLE_LIBZIP: $(ENABLE_LIBZIP)"
467
+ @echo "ENABLE_NOWIDE: $(ENABLE_NOWIDE)"
468
+ @echo
469
+ # @echo "SHARED_SUBDIR: $(SHARED_SUBDIR)"
470
+ @echo "EXTERNAL_SUBDIR: $(EXTERNAL_SUBDIR)"
471
+ @echo "PUGIXML_SUBDIR: $(PUGIXML_SUBDIR)"
472
+ @echo "ZIPPY_SUBDIR: $(ZIPPY_SUBDIR)"
473
+ @echo
474
+ # @echo "OBJS_LICENSE: $(OBJS_LICENSE)"
475
+ # @echo "OBJS_SHARED: $(OBJS_SHARED)"
476
+ @echo "OBJS_PUGIXML: $(OBJS_PUGIXML)"
477
+ @echo "OBJS_ZIPPY: $(OBJS_ZIPPY)"
478
+ @echo "OBJS_OPENXLSX: $(OBJS_OPENXLSX)"
479
+ @echo "OBJS_OPENXLSX_PREFIXED: $(OBJS_OPENXLSX_PREFIXED)"
480
+ @echo "OBJS_DEMOS: $(OBJS_DEMOS)"
481
+ @echo
482
+ @echo "PROJECT_FLAGS: $(PROJECT_FLAGS)"
483
+ @echo "ADDITIONAL_INCLUDE_FLAGS: $(ADDITIONAL_INCLUDE_FLAGS)"
484
+ @echo
485
+ @echo "OBJS_DEMO0: $(OBJS_DEMO0)"
486
+ @echo "OBJS_OPENXLSX_DEMO0: $(OBJS_OPENXLSX_DEMO0)"
487
+ @echo "LDLIBS_DEMO0: $(LDLIBS_DEMO0)"
488
+ @echo "OBJS_DEMO1: $(OBJS_DEMO1)"
489
+ @echo "OBJS_OPENXLSX_DEMO1: $(OBJS_OPENXLSX_DEMO1)"
490
+ @echo "LDLIBS_DEMO1: $(LDLIBS_DEMO1)"
491
+ @echo "OBJS_DEMO2: $(OBJS_DEMO2)"
492
+ @echo "OBJS_OPENXLSX_DEMO2: $(OBJS_OPENXLSX_DEMO2)"
493
+ @echo "LDLIBS_DEMO2: $(LDLIBS_DEMO2)"
494
+ @echo "OBJS_DEMO3: $(OBJS_DEMO3)"
495
+ @echo "OBJS_OPENXLSX_DEMO3: $(OBJS_OPENXLSX_DEMO3)"
496
+ @echo "LDLIBS_DEMO3: $(LDLIBS_DEMO3)"
497
+ @echo "OBJS_DEMO4: $(OBJS_DEMO4)"
498
+ @echo "OBJS_OPENXLSX_DEMO4: $(OBJS_OPENXLSX_DEMO4)"
499
+ @echo "LDLIBS_DEMO4: $(LDLIBS_DEMO4)"
500
+ @echo "OBJS_DEMO5: $(OBJS_DEMO5)"
501
+ @echo "OBJS_OPENXLSX_DEMO5: $(OBJS_OPENXLSX_DEMO5)"
502
+ @echo "LDLIBS_DEMO5: $(LDLIBS_DEMO5)"
503
+ @echo "OBJS_DEMO6: $(OBJS_DEMO6)"
504
+ @echo "OBJS_OPENXLSX_DEMO6: $(OBJS_OPENXLSX_DEMO6)"
505
+ @echo "LDLIBS_DEMO6: $(LDLIBS_DEMO6)"
506
+ @echo "OBJS_DEMO7: $(OBJS_DEMO7)"
507
+ @echo "OBJS_OPENXLSX_DEMO7: $(OBJS_OPENXLSX_DEMO7)"
508
+ @echo "LDLIBS_DEMO7: $(LDLIBS_DEMO7)"
509
+ @echo "OBJS_DEMO8: $(OBJS_DEMO8)"
510
+ @echo "OBJS_OPENXLSX_DEMO8: $(OBJS_OPENXLSX_DEMO8)"
511
+ @echo "LDLIBS_DEMO8: $(LDLIBS_DEMO8)"
512
+ @echo "OBJS_DEMO9: $(OBJS_DEMO9)"
513
+ @echo "OBJS_OPENXLSX_DEMO9: $(OBJS_OPENXLSX_DEMO9)"
514
+ @echo "LDLIBS_DEMO9: $(LDLIBS_DEMO9)"
515
+ @echo "OBJS_DEMO10: $(OBJS_DEMO10)"
516
+ @echo "OBJS_OPENXLSX_DEMO10: $(OBJS_OPENXLSX_DEMO10)"
517
+ @echo "LDLIBS_DEMO10: $(LDLIBS_DEMO10)"
518
+ @echo
519
+ @echo "SANITIZE_FLAGS: $(SANITIZE_FLAGS)"
520
+ @echo "SANITIZE_LIBS: $(SANITIZE_LIBS)"
521
+ @echo "DISABLED_WARNING_FLAGS: $(DISABLED_WARNING_FLAGS)"
522
+ @echo "GENERIC_FLAGS: $(GENERIC_FLAGS)"
523
+ @echo "CPPFLAGS: $(CPPFLAGS)"
524
+ @echo
525
+ @echo "INCLUDE_DIR_PUGIXML: $(INCLUDE_DIR_PUGIXML)"
526
+ @echo
527
+ @echo "LDFLAGS: $(LDFLAGS)"
528
+ @echo "LDLIBS: $(LDLIBS)"
529
+ @echo "LDLIBS_PUGIXML: $(LDLIBS_PUGIXML)"
530
+ @echo "LDLIBS_LIBZIP: $(LDLIBS_LIBZIP)"
@@ -0,0 +1,16 @@
1
+ TBD:
2
+ ----
3
+ * in XLWorkbook::setSheetIndex: What does this section do: // ===== Updated defined names with worksheet scopes. ???
4
+ * in XLWorkbook::updateSheetReferences: What does this function actually do (TBD to verify definedNames logic)???
5
+ * how to invoke non-const XMLDocument* getXmlDocument()? Had to use a const_cast because the compiler insisted on
6
+ using the const version for the assignment to a non-const XMLDocument pointer
7
+
8
+
9
+ TBC:
10
+ ----
11
+ * Does zippy.hpp line 10614 have bug in the return statement of the lambda to erase files from the result:
12
+ return (subFolderDepth == rootDepth && filename.back() != '/') || (subFolderDepth > rootDepth);
13
+ ?
14
+ If I don't misread this, the condition filename.back() != '/' would delete all filenames from the result that are not directories, which would be in contradiction to the function description
15
+ * @brief Get a list of the entries in a specific directory of the archive. Depending on the input parameters,
16
+ * the list will include directories, files or both.
@@ -0,0 +1,8 @@
1
+ CONFIRMED:
2
+ * XLCellReference constructor shall throw exception on empty string
3
+ * node.empty() works on empty nodes, e.g.: XLMNode node() // --> node.empty() evaluates to true
4
+ * Does an XLSX column type t default to "n" numeric? Because OpenXLSX does not add the t field for numbers:
5
+ -> no type == generic value (for any application reading)
6
+
7
+ * Pull request #191: can AmigaOS support ""/file-in-local-folder.xlsx, using "" as local folder?
8
+ -> No, AmigaOS does NOT support an explicit identifier for the local folder
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <styleSheet>
3
+ <tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/>
4
+ <extLst>
5
+ <ext xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main" uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}">
6
+ <x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/>
7
+ </ext>
8
+ <ext xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" uri="{9260A510-F301-46a8-8635-F512D64BE5F5}">
9
+ <x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/>
10
+ </ext>
11
+ </extLst>
12
+ </styleSheet>
@@ -0,0 +1,108 @@
1
+ How to find TBDs in the source code:
2
+ ====================================
3
+ $ grep -rni "todo\|tbd\|caution"
4
+
5
+ Planned features:
6
+ =================
7
+ * comments support: each xl/comments##.xml file refers to the corresponding xl/worksheets/sheets##.xml file with comments structured like so:
8
+ <x:commentList>
9
+ <x:comment ref="M5" authorId="0">
10
+ <x:text>
11
+ <x:t>Enabling this option will reduce memory usage by
12
+ saving some intermediate data from memory onto the
13
+ computer's hard disk.</x:t>
14
+ </x:text>
15
+ </x:comment>
16
+ </x:commentList>
17
+
18
+ NOTE: each comments file should be listed in [Content_Types].xml:
19
+ * Types::Override node: <Override PartName="/xl/comments1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"/>
20
+ * support for worksheet specific relationships (comments, drawings)
21
+ <?xml version="1.0" encoding="utf-8"?>
22
+ <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
23
+ <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="/xl/comments10.xml" Id="Rd57c507abdc84ad0"/>
24
+ <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing" Target="/xl/drawings/vmldrawing10.vml" Id="Re5068d6e0dbe4bec"/>
25
+ </Relationships>
26
+
27
+ TBD features (low priority):
28
+ ============================
29
+ * support for rich-text cell contents (see idea for an implementation of rich-text cell contents at end of file)
30
+ * replace leap year logic per XLDateTime.cpp with c++ built-in date functions
31
+ * related to random 64bit identifiers: check [Content_Types].xml "support" (in that saving the file does not break anything):
32
+ ---------------------------------------------------------------------------------------------------------------------------
33
+ * Types::Default node: <Default Extension="xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
34
+ (alternative entry to ContentType="application/xml")
35
+ * Types::Default node: <Default Extension="vml" ContentType="application/vnd.openxmlformats-officedocument.vmlDrawing"/>
36
+ * Types::Default node: <Default Extension="dat" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"/>
37
+
38
+
39
+
40
+ Notes on status of random 64bit ID support in hex format for worksheet r:id values
41
+ ==================================================================================
42
+ DONE:
43
+ * XLRelationships: void UseRandomIDs() and void UseSequentialIDs() to switch between one and the other IDs implementation
44
+ * [DONE] _rels/.rels <Relationship <!-- other attributes --> Id="R1089e9da7ec94cca"/>
45
+ --> used for relevant xml targets in the workbook
46
+ * [DONE] xl/workbook##.xml sheets::sheet node: <x:sheet name="Workspace" sheetId="1" r:id="R4b78b06d10804515"/>
47
+ --> regular sheet Ids
48
+ * xl/_rels/workbook##.xml.rels: <Relationship <!-- other attributes --> Id="Rca50407821924816"/>
49
+ workbook relationships: xl/sharedStrings.xml, xl/styles.xml, xl/theme/theme##.xml, and all worksheets
50
+ [DONE] --> regular sheet Ids for worksheets
51
+ TODO --> for the other xml files, it appears the IDs here are not used elsewhere
52
+ * [NOT TOUCHED BY OpenXLSX] xl/worksheets/_rels/sheet##.xml.rels <Relationship <!-- other attributes --> Id="Rc3c7515c124f4337"/>
53
+ each sheet needs a relationship entry for
54
+ - Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"
55
+ --> it appears the ID here is not used elsewhere
56
+ - Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing"
57
+ --> the target for a vmlDrawing is referenced by this ID in the worksheet (see below)
58
+ * [NOT TOUCHED BY OpenXLSX] xl/worksheets/sheet##.xml worksheet node "<x:legacyDrawing r:id="Rc3c7515c124f4337"/>"
59
+ --> refers to the ID defined in the worksheet relationships (above) no support needed atm
60
+
61
+
62
+
63
+ Idea for an implementation of rich-text cell contents:
64
+ ======================================================
65
+ based on: formatted text is rich-text in XML, so one element node per unique style
66
+ - user gets to "get style" for a given position in text (character):
67
+ XLRichText.rows() / .row(index i) -> allows to extract text rows by index, removing the ambiguity of how to count a line break index
68
+ XLRichText.row( i ) returns XLRichTextRow
69
+ XLRichTextRow exposes:
70
+ - std::string functionality for text manipulation, and on top of that:
71
+ - .formatAt( size_t index ) which returns an XLStyle object that contains the style applicable to that character
72
+ XLRichText::insertText( XLRichTextRow row, XLRichText text ) // insert before row with given style
73
+ XLRichText::insertText( XLRichTextRow row, std::string text, XLStyle style == __next__ )
74
+ - when a row is inserted, it inherits the format as specified:
75
+ __previous__: use style of the previous row
76
+ __next__: use style of row
77
+ (custom XLStyle): use custom style (can be default, e.g. XLStyle{})
78
+ XLRichText::insertText( XLRichTextRow row, int index, XLStyle style == __next__ )
79
+ __previous__: use style of the previous character
80
+ __next__: use style of the next character
81
+ (custom XLStyle): use custom style (can be default)
82
+
83
+ XLRichText::prependText( XLRichTextRow row, std::string text, XLStyle style == __next__ )
84
+ - equivalent to XLRichText::insertText( XLRichText.row( 0 ), text, style ) // NOTE: style == __previous__ is not allowed here
85
+ XLRichText::appendText( XLRichTextRow row, std::string text, XLStyle style == __previous__ )
86
+ - equivalent to XLRichText::insertText( XLRichText.row( XLRichText.rows().count() - 1 ), text, style ) // NOTE: style == __next__ is not allowed here
87
+
88
+ XLRichText::format( int fromRow, int fromIndex, int toRow, int toIndex, XLStyle style )
89
+ - applies the given style to the indicated range -> if it overlaps with other styles, this will split rich text sections as needed, e.g.:
90
+ * assume simplified XLRichTextPos pos_i( row_i, index_i )
91
+ * existing style_a from pos_i to pos_j
92
+ * new style_b applied to pos_k to pos_l with pos_k > pos_i and pos_l < pos_j
93
+ * resulting style sections:
94
+ [pos_i;pos_k[ style_a
95
+ [pos_k;pos_l] style_b
96
+ ]pos_l;pos_j] style_a
97
+
98
+ NOTE: for all inserts, text can have line breaks & will be inserted into the XLRichText accordingly
99
+ The underlying cell string value is updated accordingly (with the access logic to shared strings)
100
+
101
+ For such manipulations, the user has to create an XLRichText by accessing a cell intentionally as rich text, which will load the cell contents into the above structure and allow according manipulations on the underlying XML. For repeated access, it would be recommended to *not* work on temporary objects, but keep the XLRichText alive until operations on the cell are complete.
102
+
103
+ A bunch of helper functions could then be added one after another, e.g.:
104
+ * introduce XLRichTextCharacter with iterator traits (and a parent property that points to the row)
105
+ * auto-select format ranges based on an XLRichTextRow or XLRichTextCharacters
106
+ --> XLRichText::format( XLRichTextRow row ), XLRichText::format( XLRichTextRow fromRow, toRow ), XLRichText::format( XLRichTextCharacter fromChar, XLRichTextCharacter toChar )
107
+
108
+ TBD: how to decide on duplication / deduplication of XLStyles in the styles table