react-native-nitro-xlsx 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/NitroXlsx.podspec +26 -27
  2. package/Package.swift +31 -10
  3. package/README.md +1 -1
  4. package/android/CMakeLists.txt +20 -27
  5. package/package.json +2 -2
  6. package/scripts/run-cpp-tests.sh +1 -1
  7. package/thirdparty/OpenXLSX/.clang-format +118 -0
  8. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  9. package/thirdparty/OpenXLSX/.gitignore +130 -0
  10. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  11. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  12. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  13. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  14. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  15. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  16. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  17. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  18. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  19. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  20. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  21. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  22. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  23. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  24. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  25. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  26. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  27. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  28. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  29. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  30. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  31. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  32. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  33. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  34. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  35. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  36. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  37. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  38. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  39. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  40. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  41. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  42. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  43. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  44. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  45. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  46. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  47. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  48. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  49. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  50. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  51. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  52. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  53. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  54. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  55. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  56. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  57. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  58. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  59. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  60. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  61. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  62. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  63. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  64. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  65. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  66. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  67. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  68. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  69. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  70. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  71. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  72. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  73. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  74. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  75. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  76. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  77. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  78. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  79. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  80. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  81. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  82. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  83. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  84. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  123. package/thirdparty/OpenXLSX/README.md +1279 -0
  124. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  125. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  126. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  127. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  128. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  129. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  130. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  131. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  132. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  133. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  134. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  135. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  136. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  137. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  138. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  139. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  140. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  141. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  142. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  143. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  144. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  145. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  146. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  147. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  148. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  149. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  150. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  151. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  152. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  153. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  154. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  155. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  156. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  157. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  158. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  159. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  160. package/thirdparty/README.md +42 -0
  161. package/thirdparty/miniz/.clang-format +47 -0
  162. package/thirdparty/miniz/.travis.yml +2 -0
  163. package/thirdparty/miniz/CMakeLists.txt +333 -0
  164. package/thirdparty/miniz/CMakePresets.json +31 -0
  165. package/thirdparty/miniz/ChangeLog.md +272 -0
  166. package/thirdparty/miniz/Config.cmake.in +1 -0
  167. package/thirdparty/miniz/LICENSE +22 -0
  168. package/thirdparty/miniz/amalgamate.sh +57 -0
  169. package/thirdparty/miniz/examples/example1.c +105 -0
  170. package/thirdparty/miniz/examples/example2.c +164 -0
  171. package/thirdparty/miniz/examples/example3.c +269 -0
  172. package/thirdparty/miniz/examples/example4.c +102 -0
  173. package/thirdparty/miniz/examples/example5.c +327 -0
  174. package/thirdparty/miniz/examples/example6.c +189 -0
  175. package/thirdparty/miniz/meson.build +21 -0
  176. package/thirdparty/miniz/miniz.c +646 -0
  177. package/thirdparty/miniz/miniz.h +615 -0
  178. package/thirdparty/miniz/miniz.pc.in +13 -0
  179. package/thirdparty/miniz/miniz_common.h +89 -0
  180. package/thirdparty/miniz/miniz_export.h +20 -0
  181. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  182. package/thirdparty/miniz/miniz_tdef.h +199 -0
  183. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  184. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  185. package/thirdparty/miniz/miniz_zip.c +4895 -0
  186. package/thirdparty/miniz/miniz_zip.h +454 -0
  187. package/thirdparty/miniz/readme.md +46 -0
  188. package/thirdparty/miniz/test.sh +36 -0
  189. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  190. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  191. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  192. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  193. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  194. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  195. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  196. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  197. package/thirdparty/miniz/tests/main.cpp +185 -0
  198. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  199. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  200. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  201. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  202. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  203. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  204. package/thirdparty/miniz/tests/timer.cpp +152 -0
  205. package/thirdparty/miniz/tests/timer.h +40 -0
  206. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  207. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  208. package/thirdparty/miniz/tests/zip.dict +9 -0
  209. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  210. package/thirdparty/pugixml/.codecov.yml +7 -0
  211. package/thirdparty/pugixml/.gitattributes +1 -0
  212. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  213. package/thirdparty/pugixml/LICENSE.md +24 -0
  214. package/thirdparty/pugixml/Makefile +98 -0
  215. package/thirdparty/pugixml/README.md +81 -0
  216. package/thirdparty/pugixml/SECURITY.md +9 -0
  217. package/thirdparty/pugixml/appveyor.yml +50 -0
  218. package/thirdparty/pugixml/docs/config.adoc +7 -0
  219. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  220. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  221. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  222. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  223. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  224. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  225. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  226. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  227. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  228. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  229. package/thirdparty/pugixml/docs/manual.html +6395 -0
  230. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  231. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  232. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  233. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  234. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  235. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  236. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  237. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  238. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  239. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  240. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  241. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  242. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  243. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  244. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  245. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  246. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  247. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  248. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  249. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  250. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  251. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  252. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  253. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  254. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  255. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  256. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  257. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  258. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  259. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  260. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  261. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  262. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  263. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  264. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  265. package/thirdparty/pugixml/readme.txt +50 -0
  266. package/thirdparty/pugixml/scripts/archive.py +54 -0
  267. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  268. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  269. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  270. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  271. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  272. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  273. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  274. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  275. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  276. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  277. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  278. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  279. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  280. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  281. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  282. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  283. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  284. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  285. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  286. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  287. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  288. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  289. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  290. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  291. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  292. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  293. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  294. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  295. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  296. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  297. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  298. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  299. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  300. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  301. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  302. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  303. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  304. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  305. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  306. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  307. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  308. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  309. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  310. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  311. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  312. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  313. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  314. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  315. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  316. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  317. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  318. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  319. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  320. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  321. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  322. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  323. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  324. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  325. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  326. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  327. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  328. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  329. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  330. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  331. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  332. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  333. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  334. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  335. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  336. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  337. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  338. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  339. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  340. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  341. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  342. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  343. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  344. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  345. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  346. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  347. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  348. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  349. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  350. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  351. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  352. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  353. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  354. package/thirdparty/pugixml/tests/main.cpp +218 -0
  355. package/thirdparty/pugixml/tests/test.cpp +220 -0
  356. package/thirdparty/pugixml/tests/test.hpp +175 -0
  357. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  358. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  359. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  360. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  361. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  362. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  363. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  364. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  365. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  366. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  367. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  368. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  369. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  370. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  371. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  372. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  373. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  374. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  375. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  376. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  377. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  378. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  379. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  380. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  381. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  382. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  383. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  384. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  385. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  386. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  387. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  388. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  389. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  390. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  391. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  392. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  393. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  394. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  395. package/scripts/prepare-openxlsx.js +0 -126
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0"?>
2
+ <network>
3
+ <animation clip="idle" flags="loop" />
4
+ <animation clip="run" flags="loop" />
5
+ <animation clip="attack" />
6
+
7
+ <?include transitions.xml?>
8
+ </network>
@@ -0,0 +1,27 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <new>
4
+
5
+ // tag::decl[]
6
+ void* custom_allocate(size_t size)
7
+ {
8
+ return new (std::nothrow) char[size];
9
+ }
10
+
11
+ void custom_deallocate(void* ptr)
12
+ {
13
+ delete[] static_cast<char*>(ptr);
14
+ }
15
+ // end::decl[]
16
+
17
+ int main()
18
+ {
19
+ // tag::call[]
20
+ pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
21
+ // end::call[]
22
+
23
+ pugi::xml_document doc;
24
+ doc.load_string("<node/>");
25
+ }
26
+
27
+ // vim:et
@@ -0,0 +1,64 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <string.h>
4
+ #include <iostream>
5
+
6
+ // tag::code[]
7
+ bool load_preprocess(pugi::xml_document& doc, const char* path);
8
+
9
+ bool preprocess(pugi::xml_node node)
10
+ {
11
+ for (pugi::xml_node child = node.first_child(); child; )
12
+ {
13
+ if (child.type() == pugi::node_pi && strcmp(child.name(), "include") == 0)
14
+ {
15
+ pugi::xml_node include = child;
16
+
17
+ // load new preprocessed document (note: ideally this should handle relative paths)
18
+ const char* path = include.value();
19
+
20
+ pugi::xml_document doc;
21
+ if (!load_preprocess(doc, path)) return false;
22
+
23
+ // insert the comment marker above include directive
24
+ node.insert_child_before(pugi::node_comment, include).set_value(path);
25
+
26
+ // copy the document above the include directive (this retains the original order!)
27
+ for (pugi::xml_node ic = doc.first_child(); ic; ic = ic.next_sibling())
28
+ {
29
+ node.insert_copy_before(ic, include);
30
+ }
31
+
32
+ // remove the include node and move to the next child
33
+ child = child.next_sibling();
34
+
35
+ node.remove_child(include);
36
+ }
37
+ else
38
+ {
39
+ if (!preprocess(child)) return false;
40
+
41
+ child = child.next_sibling();
42
+ }
43
+ }
44
+
45
+ return true;
46
+ }
47
+
48
+ bool load_preprocess(pugi::xml_document& doc, const char* path)
49
+ {
50
+ pugi::xml_parse_result result = doc.load_file(path, pugi::parse_default | pugi::parse_pi); // for <?include?>
51
+
52
+ return result ? preprocess(doc) : false;
53
+ }
54
+ // end::code[]
55
+
56
+ int main()
57
+ {
58
+ pugi::xml_document doc;
59
+ if (!load_preprocess(doc, "character.xml")) return -1;
60
+
61
+ doc.print(std::cout);
62
+ }
63
+
64
+ // vim:et
@@ -0,0 +1,33 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ void check_xml(const char* source)
6
+ {
7
+ // tag::code[]
8
+ pugi::xml_document doc;
9
+ pugi::xml_parse_result result = doc.load_string(source);
10
+
11
+ if (result)
12
+ {
13
+ std::cout << "XML [" << source << "] parsed without errors, attr value: [" << doc.child("node").attribute("attr").value() << "]\n\n";
14
+ }
15
+ else
16
+ {
17
+ std::cout << "XML [" << source << "] parsed with errors, attr value: [" << doc.child("node").attribute("attr").value() << "]\n";
18
+ std::cout << "Error description: " << result.description() << "\n";
19
+ std::cout << "Error offset: " << result.offset << " (error at [..." << (source + result.offset) << "]\n\n";
20
+ }
21
+ // end::code[]
22
+ }
23
+
24
+ int main()
25
+ {
26
+ check_xml("<node attr='value'><child>text</child></node>");
27
+ check_xml("<node attr='value'><child>text</chil></node>");
28
+ check_xml("<node attr='value'><child>text</child>");
29
+ check_xml("<node attr='value\"><child>text</child></node>");
30
+ check_xml("<node attr='value'><#tag /></node>");
31
+ }
32
+
33
+ // vim:et
@@ -0,0 +1,16 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ // tag::code[]
8
+ pugi::xml_document doc;
9
+
10
+ pugi::xml_parse_result result = doc.load_file("tree.xml");
11
+
12
+ std::cout << "Load result: " << result.description() << ", mesh name: " << doc.child("mesh").attribute("name").value() << std::endl;
13
+ // end::code[]
14
+ }
15
+
16
+ // vim:et
@@ -0,0 +1,66 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+ #include <cstring>
5
+
6
+ int main()
7
+ {
8
+ // tag::decl[]
9
+ const char source[] = "<mesh name='sphere'><bounds>0 0 1 1</bounds></mesh>";
10
+ size_t size = sizeof(source);
11
+ // end::decl[]
12
+
13
+ pugi::xml_document doc;
14
+
15
+ {
16
+ // tag::load_buffer[]
17
+ // You can use load_buffer to load document from immutable memory block:
18
+ pugi::xml_parse_result result = doc.load_buffer(source, size);
19
+ // end::load_buffer[]
20
+
21
+ std::cout << "Load result: " << result.description() << ", mesh name: " << doc.child("mesh").attribute("name").value() << std::endl;
22
+ }
23
+
24
+ {
25
+ // tag::load_buffer_inplace_begin[]
26
+ // You can use load_buffer_inplace to load document from mutable memory block; the block's lifetime must exceed that of document
27
+ char* buffer = new char[size];
28
+ memcpy(buffer, source, size);
29
+
30
+ // The block can be allocated by any method; the block is modified during parsing
31
+ pugi::xml_parse_result result = doc.load_buffer_inplace(buffer, size);
32
+ // end::load_buffer_inplace_begin[]
33
+
34
+ std::cout << "Load result: " << result.description() << ", mesh name: " << doc.child("mesh").attribute("name").value() << std::endl;
35
+
36
+ // tag::load_buffer_inplace_end[]
37
+ // You have to destroy the block yourself after the document is no longer used
38
+ delete[] buffer;
39
+ // end::load_buffer_inplace_end[]
40
+ }
41
+
42
+ {
43
+ // tag::load_buffer_inplace_own[]
44
+ // You can use load_buffer_inplace_own to load document from mutable memory block and to pass the ownership of this block
45
+ // The block has to be allocated via pugixml allocation function - using i.e. operator new here is incorrect
46
+ char* buffer = static_cast<char*>(pugi::get_memory_allocation_function()(size));
47
+ memcpy(buffer, source, size);
48
+
49
+ // The block will be deleted by the document
50
+ pugi::xml_parse_result result = doc.load_buffer_inplace_own(buffer, size);
51
+ // end::load_buffer_inplace_own[]
52
+
53
+ std::cout << "Load result: " << result.description() << ", mesh name: " << doc.child("mesh").attribute("name").value() << std::endl;
54
+ }
55
+
56
+ {
57
+ // tag::load_string[]
58
+ // You can use load to load document from null-terminated strings, for example literals:
59
+ pugi::xml_parse_result result = doc.load_string("<mesh name='sphere'><bounds>0 0 1 1</bounds></mesh>");
60
+ // end::load_string[]
61
+
62
+ std::cout << "Load result: " << result.description() << ", mesh name: " << doc.child("mesh").attribute("name").value() << std::endl;
63
+ }
64
+ }
65
+
66
+ // vim:et
@@ -0,0 +1,30 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ pugi::xml_document doc;
8
+
9
+ // tag::code[]
10
+ const char* source = "<!--comment--><node>&lt;</node>";
11
+
12
+ // Parsing with default options; note that comment node is not added to the tree, and entity reference &lt; is expanded
13
+ doc.load_string(source);
14
+ std::cout << "First node value: [" << doc.first_child().value() << "], node child value: [" << doc.child_value("node") << "]\n";
15
+
16
+ // Parsing with additional parse_comments option; comment node is now added to the tree
17
+ doc.load_string(source, pugi::parse_default | pugi::parse_comments);
18
+ std::cout << "First node value: [" << doc.first_child().value() << "], node child value: [" << doc.child_value("node") << "]\n";
19
+
20
+ // Parsing with additional parse_comments option and without the (default) parse_escapes option; &lt; is not expanded
21
+ doc.load_string(source, (pugi::parse_default | pugi::parse_comments) & ~pugi::parse_escapes);
22
+ std::cout << "First node value: [" << doc.first_child().value() << "], node child value: [" << doc.child_value("node") << "]\n";
23
+
24
+ // Parsing with minimal option mask; comment node is not added to the tree, and &lt; is not expanded
25
+ doc.load_string(source, pugi::parse_minimal);
26
+ std::cout << "First node value: [" << doc.first_child().value() << "], node child value: [" << doc.child_value("node") << "]\n";
27
+ // end::code[]
28
+ }
29
+
30
+ // vim:et
@@ -0,0 +1,97 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <fstream>
4
+ #include <iomanip>
5
+ #include <iostream>
6
+
7
+ void print_doc(const char* message, const pugi::xml_document& doc, const pugi::xml_parse_result& result)
8
+ {
9
+ std::cout
10
+ << message
11
+ << "\t: load result '" << result.description() << "'"
12
+ << ", first character of root name: U+" << std::hex << std::uppercase << std::setw(4) << std::setfill('0') << pugi::as_wide(doc.first_child().name())[0]
13
+ << ", year: " << doc.first_child().first_child().first_child().child_value()
14
+ << std::endl;
15
+ }
16
+
17
+ bool try_imbue(std::wistream& stream, const char* name)
18
+ {
19
+ try
20
+ {
21
+ stream.imbue(std::locale(name));
22
+
23
+ return true;
24
+ }
25
+ catch (const std::exception&)
26
+ {
27
+ return false;
28
+ }
29
+ }
30
+
31
+ int main()
32
+ {
33
+ pugi::xml_document doc;
34
+
35
+ {
36
+ // tag::code[]
37
+ std::ifstream stream("weekly-utf-8.xml");
38
+ pugi::xml_parse_result result = doc.load(stream);
39
+ // end::code[]
40
+
41
+ // first character of root name: U+9031, year: 1997
42
+ print_doc("UTF8 file from narrow stream", doc, result);
43
+ }
44
+
45
+ {
46
+ std::ifstream stream("weekly-utf-16.xml");
47
+ pugi::xml_parse_result result = doc.load(stream);
48
+
49
+ // first character of root name: U+9031, year: 1997
50
+ print_doc("UTF16 file from narrow stream", doc, result);
51
+ }
52
+
53
+ {
54
+ // Since wide streams are treated as UTF-16/32 ones, you can't load the UTF-8 file from a wide stream
55
+ // directly if you have localized characters; you'll have to provide a UTF8 locale (there is no
56
+ // standard one; you can use utf8_codecvt_facet from Boost or codecvt_utf8 from C++0x)
57
+ std::wifstream stream("weekly-utf-8.xml");
58
+
59
+ if (try_imbue(stream, "en_US.UTF-8")) // try Linux encoding
60
+ {
61
+ pugi::xml_parse_result result = doc.load(stream);
62
+
63
+ // first character of root name: U+00E9, year: 1997
64
+ print_doc("UTF8 file from wide stream", doc, result);
65
+ }
66
+ else
67
+ {
68
+ std::cout << "UTF-8 locale is not available\n";
69
+ }
70
+ }
71
+
72
+ {
73
+ // Since wide streams are treated as UTF-16/32 ones, you can't load the UTF-16 file from a wide stream without
74
+ // using custom codecvt; you can use codecvt_utf16 from C++0x
75
+ }
76
+
77
+ {
78
+ // Since encoding names are non-standard, you can't load the Shift-JIS (or any other non-ASCII) file
79
+ // from a wide stream portably
80
+ std::wifstream stream("weekly-shift_jis.xml");
81
+
82
+ if (try_imbue(stream, ".932") || // try Microsoft encoding
83
+ try_imbue(stream, "ja_JP.SJIS")) // try Linux encoding; run "localedef -i ja_JP -c -f SHIFT_JIS /usr/lib/locale/ja_JP.SJIS" to get it
84
+ {
85
+ pugi::xml_parse_result result = doc.load(stream);
86
+
87
+ // first character of root name: U+9031, year: 1997
88
+ print_doc("Shift-JIS file from wide stream", doc, result);
89
+ }
90
+ else
91
+ {
92
+ std::cout << "Shift-JIS locale is not available\n";
93
+ }
94
+ }
95
+ }
96
+
97
+ // vim:et
@@ -0,0 +1,29 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ pugi::xml_document doc;
8
+
9
+ // tag::code[]
10
+ // add node with some name
11
+ pugi::xml_node node = doc.append_child("node");
12
+
13
+ // add description node with text child
14
+ pugi::xml_node descr = node.append_child("description");
15
+ descr.append_child(pugi::node_pcdata).set_value("Simple node");
16
+
17
+ // add param node before the description
18
+ pugi::xml_node param = node.insert_child_before("param", descr);
19
+
20
+ // add attributes to param node
21
+ param.append_attribute("name") = "version";
22
+ param.append_attribute("value") = 1.1;
23
+ param.insert_attribute_after("type", param.attribute("name")) = "float";
24
+ // end::code[]
25
+
26
+ doc.print(std::cout);
27
+ }
28
+
29
+ // vim:et
@@ -0,0 +1,43 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <string.h>
4
+ #include <iostream>
5
+
6
+ int main()
7
+ {
8
+ pugi::xml_document doc;
9
+ if (!doc.load_string("<node id='123'>text</node><!-- comment -->", pugi::parse_default | pugi::parse_comments)) return -1;
10
+
11
+ // tag::node[]
12
+ pugi::xml_node node = doc.child("node");
13
+
14
+ // change node name
15
+ std::cout << node.set_name("notnode");
16
+ std::cout << ", new node name: " << node.name() << std::endl;
17
+
18
+ // change comment text
19
+ std::cout << doc.last_child().set_value("useless comment");
20
+ std::cout << ", new comment text: " << doc.last_child().value() << std::endl;
21
+
22
+ // we can't change value of the element or name of the comment
23
+ std::cout << node.set_value("1") << ", " << doc.last_child().set_name("2") << std::endl;
24
+ // end::node[]
25
+
26
+ // tag::attr[]
27
+ pugi::xml_attribute attr = node.attribute("id");
28
+
29
+ // change attribute name/value
30
+ std::cout << attr.set_name("key") << ", " << attr.set_value("345");
31
+ std::cout << ", new attribute: " << attr.name() << "=" << attr.value() << std::endl;
32
+
33
+ // we can use numbers or booleans
34
+ attr.set_value(1.234);
35
+ std::cout << "new attribute value: " << attr.value() << std::endl;
36
+
37
+ // we can also use assignment operators for more concise code
38
+ attr = true;
39
+ std::cout << "final attribute value: " << attr.value() << std::endl;
40
+ // end::attr[]
41
+ }
42
+
43
+ // vim:et
@@ -0,0 +1,27 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ pugi::xml_document doc;
8
+ if (!doc.load_string("<node><description>Simple node</description><param name='id' value='123'/></node>")) return -1;
9
+
10
+ // tag::code[]
11
+ // remove description node with the whole subtree
12
+ pugi::xml_node node = doc.child("node");
13
+ node.remove_child("description");
14
+
15
+ // remove value attribute
16
+ pugi::xml_node param = node.child("param");
17
+ param.remove_attribute("value");
18
+
19
+ // we can also remove nodes/attributes by handles
20
+ pugi::xml_attribute id = param.attribute("name");
21
+ param.remove_attribute(id);
22
+ // end::code[]
23
+
24
+ doc.print(std::cout);
25
+ }
26
+
27
+ // vim:et
@@ -0,0 +1,116 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <string>
4
+ #include <iostream>
5
+ #include <cstring>
6
+
7
+ // tag::code[]
8
+ struct xml_string_writer: pugi::xml_writer
9
+ {
10
+ std::string result;
11
+
12
+ virtual void write(const void* data, size_t size)
13
+ {
14
+ result.append(static_cast<const char*>(data), size);
15
+ }
16
+ };
17
+ // end::code[]
18
+
19
+ struct xml_memory_writer: pugi::xml_writer
20
+ {
21
+ char* buffer;
22
+ size_t capacity;
23
+
24
+ size_t result;
25
+
26
+ xml_memory_writer(): buffer(0), capacity(0), result(0)
27
+ {
28
+ }
29
+
30
+ xml_memory_writer(char* buffer, size_t capacity): buffer(buffer), capacity(capacity), result(0)
31
+ {
32
+ }
33
+
34
+ size_t written_size() const
35
+ {
36
+ return result < capacity ? result : capacity;
37
+ }
38
+
39
+ virtual void write(const void* data, size_t size)
40
+ {
41
+ if (result < capacity)
42
+ {
43
+ size_t chunk = (capacity - result < size) ? capacity - result : size;
44
+
45
+ memcpy(buffer + result, data, chunk);
46
+ }
47
+
48
+ result += size;
49
+ }
50
+ };
51
+
52
+ std::string node_to_string(pugi::xml_node node)
53
+ {
54
+ xml_string_writer writer;
55
+ node.print(writer);
56
+
57
+ return writer.result;
58
+ }
59
+
60
+ char* node_to_buffer(pugi::xml_node node, char* buffer, size_t size)
61
+ {
62
+ if (size == 0) return buffer;
63
+
64
+ // leave one character for null terminator
65
+ xml_memory_writer writer(buffer, size - 1);
66
+ node.print(writer);
67
+
68
+ // null terminate
69
+ buffer[writer.written_size()] = 0;
70
+
71
+ return buffer;
72
+ }
73
+
74
+ char* node_to_buffer_heap(pugi::xml_node node)
75
+ {
76
+ // first pass: get required memory size
77
+ xml_memory_writer counter;
78
+ node.print(counter);
79
+
80
+ // allocate necessary size (+1 for null termination)
81
+ char* buffer = new char[counter.result + 1];
82
+
83
+ // second pass: actual printing
84
+ xml_memory_writer writer(buffer, counter.result);
85
+ node.print(writer);
86
+
87
+ // null terminate
88
+ buffer[writer.written_size()] = 0;
89
+
90
+ return buffer;
91
+ }
92
+
93
+ int main()
94
+ {
95
+ // get a test document
96
+ pugi::xml_document doc;
97
+ doc.load_string("<foo bar='baz'>hey</foo>");
98
+
99
+ // get contents as std::string (single pass)
100
+ std::cout << "contents: [" << node_to_string(doc) << "]\n";
101
+
102
+ // get contents into fixed-size buffer (single pass)
103
+ char large_buf[128];
104
+ std::cout << "contents: [" << node_to_buffer(doc, large_buf, sizeof(large_buf)) << "]\n";
105
+
106
+ // get contents into fixed-size buffer (single pass, shows truncating behavior)
107
+ char small_buf[22];
108
+ std::cout << "contents: [" << node_to_buffer(doc, small_buf, sizeof(small_buf)) << "]\n";
109
+
110
+ // get contents into heap-allocated buffer (two passes)
111
+ char* heap_buf = node_to_buffer_heap(doc);
112
+ std::cout << "contents: [" << heap_buf << "]\n";
113
+ delete[] heap_buf;
114
+ }
115
+
116
+ // vim:et
@@ -0,0 +1,27 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ // tag::code[]
8
+ // get a test document
9
+ pugi::xml_document doc;
10
+ doc.load_string("<foo bar='baz'><call>hey</call></foo>");
11
+
12
+ // add a custom declaration node
13
+ pugi::xml_node decl = doc.prepend_child(pugi::node_declaration);
14
+ decl.append_attribute("version") = "1.0";
15
+ decl.append_attribute("encoding") = "UTF-8";
16
+ decl.append_attribute("standalone") = "no";
17
+
18
+ // <?xml version="1.0" encoding="UTF-8" standalone="no"?>
19
+ // <foo bar="baz">
20
+ // <call>hey</call>
21
+ // </foo>
22
+ doc.save(std::cout);
23
+ std::cout << std::endl;
24
+ // end::code[]
25
+ }
26
+
27
+ // vim:et
@@ -0,0 +1,17 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ // get a test document
8
+ pugi::xml_document doc;
9
+ doc.load_string("<foo bar='baz'>hey</foo>");
10
+
11
+ // tag::code[]
12
+ // save document to file
13
+ std::cout << "Saving result: " << doc.save_file("save_file_output.xml") << std::endl;
14
+ // end::code[]
15
+ }
16
+
17
+ // vim:et
@@ -0,0 +1,48 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ // tag::code[]
8
+ // get a test document
9
+ pugi::xml_document doc;
10
+ doc.load_string("<foo bar='baz'><call>hey</call></foo>");
11
+
12
+ // default options; prints
13
+ // <?xml version="1.0"?>
14
+ // <foo bar="baz">
15
+ // <call>hey</call>
16
+ // </foo>
17
+ doc.save(std::cout);
18
+ std::cout << std::endl;
19
+
20
+ // default options with custom indentation string; prints
21
+ // <?xml version="1.0"?>
22
+ // <foo bar="baz">
23
+ // --<call>hey</call>
24
+ // </foo>
25
+ doc.save(std::cout, "--");
26
+ std::cout << std::endl;
27
+
28
+ // default options without indentation; prints
29
+ // <?xml version="1.0"?>
30
+ // <foo bar="baz">
31
+ // <call>hey</call>
32
+ // </foo>
33
+ doc.save(std::cout, "\t", pugi::format_default & ~pugi::format_indent); // can also pass "" instead of indentation string for the same effect
34
+ std::cout << std::endl;
35
+
36
+ // raw output; prints
37
+ // <?xml version="1.0"?><foo bar="baz"><call>hey</call></foo>
38
+ doc.save(std::cout, "\t", pugi::format_raw);
39
+ std::cout << std::endl << std::endl;
40
+
41
+ // raw output without declaration; prints
42
+ // <foo bar="baz"><call>hey</call></foo>
43
+ doc.save(std::cout, "\t", pugi::format_raw | pugi::format_no_declaration);
44
+ std::cout << std::endl;
45
+ // end::code[]
46
+ }
47
+
48
+ // vim:et
@@ -0,0 +1,18 @@
1
+ #include "pugixml.hpp"
2
+
3
+ #include <iostream>
4
+
5
+ int main()
6
+ {
7
+ // get a test document
8
+ pugi::xml_document doc;
9
+ doc.load_string("<foo bar='baz'><call>hey</call></foo>");
10
+
11
+ // tag::code[]
12
+ // save document to standard output
13
+ std::cout << "Document:\n";
14
+ doc.save(std::cout);
15
+ // end::code[]
16
+ }
17
+
18
+ // vim:et