libwz 0.1.0

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 (362) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/binding.gyp +149 -0
  4. package/deps/tiny-aes/.github/workflows/c-cpp.yml +27 -0
  5. package/deps/tiny-aes/CMakeLists.txt +17 -0
  6. package/deps/tiny-aes/Makefile +61 -0
  7. package/deps/tiny-aes/README.md +83 -0
  8. package/deps/tiny-aes/aes.c +572 -0
  9. package/deps/tiny-aes/aes.h +91 -0
  10. package/deps/tiny-aes/aes.hpp +12 -0
  11. package/deps/tiny-aes/conanfile.py +73 -0
  12. package/deps/tiny-aes/library.json +19 -0
  13. package/deps/tiny-aes/library.properties +11 -0
  14. package/deps/tiny-aes/test.c +316 -0
  15. package/deps/tiny-aes/test.cpp +2 -0
  16. package/deps/tiny-aes/test_package/CMakeLists.txt +11 -0
  17. package/deps/tiny-aes/test_package/conanfile.py +17 -0
  18. package/deps/tiny-aes/unlicense.txt +24 -0
  19. package/deps/zlib/.cmake-format.yaml +245 -0
  20. package/deps/zlib/.github/workflows/c-std.yml +268 -0
  21. package/deps/zlib/.github/workflows/cmake.yml +147 -0
  22. package/deps/zlib/.github/workflows/configure.yml +146 -0
  23. package/deps/zlib/.github/workflows/contribs.yml +64 -0
  24. package/deps/zlib/.github/workflows/fuzz.yml +25 -0
  25. package/deps/zlib/.github/workflows/msys-cygwin.yml +92 -0
  26. package/deps/zlib/.github/workflows/others.yml +153 -0
  27. package/deps/zlib/BUILD.bazel +134 -0
  28. package/deps/zlib/CMakeLists.txt +310 -0
  29. package/deps/zlib/ChangeLog +1669 -0
  30. package/deps/zlib/FAQ +371 -0
  31. package/deps/zlib/INDEX +67 -0
  32. package/deps/zlib/LICENSE +22 -0
  33. package/deps/zlib/MODULE.bazel +9 -0
  34. package/deps/zlib/Makefile.in +426 -0
  35. package/deps/zlib/README +115 -0
  36. package/deps/zlib/README-cmake.md +79 -0
  37. package/deps/zlib/adler32.c +164 -0
  38. package/deps/zlib/amiga/Makefile.pup +69 -0
  39. package/deps/zlib/amiga/Makefile.sas +68 -0
  40. package/deps/zlib/compress.c +99 -0
  41. package/deps/zlib/configure +1078 -0
  42. package/deps/zlib/contrib/CMakeLists.txt +61 -0
  43. package/deps/zlib/contrib/README.contrib +57 -0
  44. package/deps/zlib/contrib/ada/CMakeLists.txt +217 -0
  45. package/deps/zlib/contrib/ada/buffer_demo.adb +106 -0
  46. package/deps/zlib/contrib/ada/cmake/Modules/CMakeADACompiler.cmake.in +23 -0
  47. package/deps/zlib/contrib/ada/cmake/Modules/CMakeADAInformation.cmake +133 -0
  48. package/deps/zlib/contrib/ada/cmake/Modules/CMakeDetermineADACompiler.cmake +33 -0
  49. package/deps/zlib/contrib/ada/cmake/Modules/CMakeTestADACompiler.cmake +46 -0
  50. package/deps/zlib/contrib/ada/cmake/binder_helper.cmake +47 -0
  51. package/deps/zlib/contrib/ada/cmake/compile_helper.cmake +32 -0
  52. package/deps/zlib/contrib/ada/cmake/exe_link_helper.cmake +53 -0
  53. package/deps/zlib/contrib/ada/cmake/shared_link_helper.cmake +52 -0
  54. package/deps/zlib/contrib/ada/cmake/static_link_helper.cmake +25 -0
  55. package/deps/zlib/contrib/ada/mtest.adb +156 -0
  56. package/deps/zlib/contrib/ada/read.adb +156 -0
  57. package/deps/zlib/contrib/ada/readme.txt +65 -0
  58. package/deps/zlib/contrib/ada/test.adb +463 -0
  59. package/deps/zlib/contrib/ada/zlib-streams.adb +225 -0
  60. package/deps/zlib/contrib/ada/zlib-streams.ads +114 -0
  61. package/deps/zlib/contrib/ada/zlib-thin.adb +142 -0
  62. package/deps/zlib/contrib/ada/zlib-thin.ads +450 -0
  63. package/deps/zlib/contrib/ada/zlib.adb +701 -0
  64. package/deps/zlib/contrib/ada/zlib.ads +328 -0
  65. package/deps/zlib/contrib/ada/zlib.gpr +20 -0
  66. package/deps/zlib/contrib/blast/CMakeLists.txt +166 -0
  67. package/deps/zlib/contrib/blast/Makefile +14 -0
  68. package/deps/zlib/contrib/blast/README +4 -0
  69. package/deps/zlib/contrib/blast/blast-test.c +42 -0
  70. package/deps/zlib/contrib/blast/blast.c +422 -0
  71. package/deps/zlib/contrib/blast/blast.h +84 -0
  72. package/deps/zlib/contrib/blast/blastConfig.cmake.in +18 -0
  73. package/deps/zlib/contrib/blast/test/CMakeLists.txt +193 -0
  74. package/deps/zlib/contrib/blast/test/add_subdirectory_exclude_test.cmake.in +27 -0
  75. package/deps/zlib/contrib/blast/test/add_subdirectory_test.cmake.in +25 -0
  76. package/deps/zlib/contrib/blast/test/find_package_no_components_test.cmake.in +24 -0
  77. package/deps/zlib/contrib/blast/test/find_package_test.cmake.in +24 -0
  78. package/deps/zlib/contrib/blast/test/find_package_wrong_components_test.cmake.in +24 -0
  79. package/deps/zlib/contrib/blast/test.pk +0 -0
  80. package/deps/zlib/contrib/blast/test.txt +1 -0
  81. package/deps/zlib/contrib/blast/tester.cmake +28 -0
  82. package/deps/zlib/contrib/crc32vx/CMakeLists.txt +67 -0
  83. package/deps/zlib/contrib/crc32vx/README +9 -0
  84. package/deps/zlib/contrib/crc32vx/crc32_vx.c +254 -0
  85. package/deps/zlib/contrib/crc32vx/crc32_vx_hooks.h +9 -0
  86. package/deps/zlib/contrib/delphi/ZLib.pas +557 -0
  87. package/deps/zlib/contrib/delphi/ZLibConst.pas +11 -0
  88. package/deps/zlib/contrib/delphi/readme.txt +76 -0
  89. package/deps/zlib/contrib/delphi/zlibd32.mak +99 -0
  90. package/deps/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  91. package/deps/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  92. package/deps/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  93. package/deps/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  94. package/deps/zlib/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  95. package/deps/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  96. package/deps/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  97. package/deps/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  98. package/deps/zlib/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  99. package/deps/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  100. package/deps/zlib/contrib/dotzlib/DotZLib.build +33 -0
  101. package/deps/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  102. package/deps/zlib/contrib/dotzlib/DotZLib.sln +21 -0
  103. package/deps/zlib/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  104. package/deps/zlib/contrib/dotzlib/readme.txt +58 -0
  105. package/deps/zlib/contrib/gcc_gvmat64/CMakeLists.txt +19 -0
  106. package/deps/zlib/contrib/gcc_gvmat64/gvmat64.S +570 -0
  107. package/deps/zlib/contrib/infback9/CMakeLists.txt +19 -0
  108. package/deps/zlib/contrib/infback9/README +1 -0
  109. package/deps/zlib/contrib/infback9/infback9.c +603 -0
  110. package/deps/zlib/contrib/infback9/infback9.h +37 -0
  111. package/deps/zlib/contrib/infback9/inffix9.h +107 -0
  112. package/deps/zlib/contrib/infback9/inflate9.h +47 -0
  113. package/deps/zlib/contrib/infback9/inftree9.c +319 -0
  114. package/deps/zlib/contrib/infback9/inftree9.h +61 -0
  115. package/deps/zlib/contrib/iostream/test.cpp +24 -0
  116. package/deps/zlib/contrib/iostream/zfstream.cpp +329 -0
  117. package/deps/zlib/contrib/iostream/zfstream.h +128 -0
  118. package/deps/zlib/contrib/iostream2/zstream.h +306 -0
  119. package/deps/zlib/contrib/iostream2/zstream_test.cpp +25 -0
  120. package/deps/zlib/contrib/iostream3/CMakeLists.txt +200 -0
  121. package/deps/zlib/contrib/iostream3/README +35 -0
  122. package/deps/zlib/contrib/iostream3/TODO +17 -0
  123. package/deps/zlib/contrib/iostream3/iostream3Config.cmake.in +23 -0
  124. package/deps/zlib/contrib/iostream3/test/CMakeLists.txt +191 -0
  125. package/deps/zlib/contrib/iostream3/test/add_subdirectory_exclude_test.cmake.in +27 -0
  126. package/deps/zlib/contrib/iostream3/test/add_subdirectory_test.cmake.in +25 -0
  127. package/deps/zlib/contrib/iostream3/test/find_package_no_components_test.cmake.in +24 -0
  128. package/deps/zlib/contrib/iostream3/test/find_package_test.cmake.in +24 -0
  129. package/deps/zlib/contrib/iostream3/test/find_package_wrong_components_test.cmake.in +24 -0
  130. package/deps/zlib/contrib/iostream3/test.cc +50 -0
  131. package/deps/zlib/contrib/iostream3/zfstream.cc +479 -0
  132. package/deps/zlib/contrib/iostream3/zfstream.h +466 -0
  133. package/deps/zlib/contrib/minizip/CMakeLists.txt +387 -0
  134. package/deps/zlib/contrib/minizip/LICENSE.Info-Zip +58 -0
  135. package/deps/zlib/contrib/minizip/Makefile +33 -0
  136. package/deps/zlib/contrib/minizip/Makefile.am +45 -0
  137. package/deps/zlib/contrib/minizip/MiniZip64_Changes.txt +6 -0
  138. package/deps/zlib/contrib/minizip/MiniZip64_info.txt +69 -0
  139. package/deps/zlib/contrib/minizip/configure.ac +32 -0
  140. package/deps/zlib/contrib/minizip/crypt.h +125 -0
  141. package/deps/zlib/contrib/minizip/ints.h +57 -0
  142. package/deps/zlib/contrib/minizip/ioapi.c +231 -0
  143. package/deps/zlib/contrib/minizip/ioapi.h +183 -0
  144. package/deps/zlib/contrib/minizip/iowin32.c +447 -0
  145. package/deps/zlib/contrib/minizip/iowin32.h +27 -0
  146. package/deps/zlib/contrib/minizip/make_vms.com +25 -0
  147. package/deps/zlib/contrib/minizip/miniunz.c +647 -0
  148. package/deps/zlib/contrib/minizip/miniunzip.1 +63 -0
  149. package/deps/zlib/contrib/minizip/minizip.1 +46 -0
  150. package/deps/zlib/contrib/minizip/minizip.c +511 -0
  151. package/deps/zlib/contrib/minizip/minizip.pc.in +13 -0
  152. package/deps/zlib/contrib/minizip/minizip.pc.txt +13 -0
  153. package/deps/zlib/contrib/minizip/minizipConfig.cmake.in +27 -0
  154. package/deps/zlib/contrib/minizip/mztools.c +294 -0
  155. package/deps/zlib/contrib/minizip/mztools.h +37 -0
  156. package/deps/zlib/contrib/minizip/skipset.h +366 -0
  157. package/deps/zlib/contrib/minizip/test/CMakeLists.txt +176 -0
  158. package/deps/zlib/contrib/minizip/test/add_subdirectory_exclude_test.cmake.in +29 -0
  159. package/deps/zlib/contrib/minizip/test/add_subdirectory_test.cmake.in +28 -0
  160. package/deps/zlib/contrib/minizip/test/find_package_no_components_test.cmake.in +26 -0
  161. package/deps/zlib/contrib/minizip/test/find_package_test.cmake.in +26 -0
  162. package/deps/zlib/contrib/minizip/test/find_package_wrong_components_test.cmake.in +26 -0
  163. package/deps/zlib/contrib/minizip/test/test_helper.cm +32 -0
  164. package/deps/zlib/contrib/minizip/unzip.c +1984 -0
  165. package/deps/zlib/contrib/minizip/unzip.h +442 -0
  166. package/deps/zlib/contrib/minizip/zip.c +2246 -0
  167. package/deps/zlib/contrib/minizip/zip.h +371 -0
  168. package/deps/zlib/contrib/nuget/nuget.csproj +45 -0
  169. package/deps/zlib/contrib/nuget/nuget.sln +22 -0
  170. package/deps/zlib/contrib/pascal/example.pas +599 -0
  171. package/deps/zlib/contrib/pascal/readme.txt +76 -0
  172. package/deps/zlib/contrib/pascal/zlibd32.mak +99 -0
  173. package/deps/zlib/contrib/pascal/zlibpas.pas +276 -0
  174. package/deps/zlib/contrib/puff/CMakeLists.txt +154 -0
  175. package/deps/zlib/contrib/puff/Makefile +42 -0
  176. package/deps/zlib/contrib/puff/README +63 -0
  177. package/deps/zlib/contrib/puff/bin-writer.c +26 -0
  178. package/deps/zlib/contrib/puff/puff.c +840 -0
  179. package/deps/zlib/contrib/puff/puff.h +35 -0
  180. package/deps/zlib/contrib/puff/puffConfig.cmake.in +18 -0
  181. package/deps/zlib/contrib/puff/pufftest.c +168 -0
  182. package/deps/zlib/contrib/puff/test/CMakeLists.txt +262 -0
  183. package/deps/zlib/contrib/puff/test/add_subdirectory_exclude_test.cmake.in +26 -0
  184. package/deps/zlib/contrib/puff/test/add_subdirectory_test.cmake.in +25 -0
  185. package/deps/zlib/contrib/puff/test/find_package_no_components_test.cmake.in +24 -0
  186. package/deps/zlib/contrib/puff/test/find_package_test.cmake.in +24 -0
  187. package/deps/zlib/contrib/puff/test/find_package_wrong_components_test.cmake.in +24 -0
  188. package/deps/zlib/contrib/puff/test/tester-cov.cmake +58 -0
  189. package/deps/zlib/contrib/puff/test/tester.cmake +16 -0
  190. package/deps/zlib/contrib/puff/zeros.raw +0 -0
  191. package/deps/zlib/contrib/testzlib/CMakeLists.txt +44 -0
  192. package/deps/zlib/contrib/testzlib/testzlib.c +275 -0
  193. package/deps/zlib/contrib/testzlib/testzlib.txt +10 -0
  194. package/deps/zlib/contrib/vstudio/readme.txt +22 -0
  195. package/deps/zlib/contrib/zlib1-dll/CMakeLists.txt +196 -0
  196. package/deps/zlib/contrib/zlib1-dll/readme.txt +21 -0
  197. package/deps/zlib/crc32.c +983 -0
  198. package/deps/zlib/crc32.h +9446 -0
  199. package/deps/zlib/deflate.c +2185 -0
  200. package/deps/zlib/deflate.h +383 -0
  201. package/deps/zlib/doc/algorithm.txt +209 -0
  202. package/deps/zlib/doc/crc-doc.1.0.pdf +0 -0
  203. package/deps/zlib/doc/rfc1950.txt +619 -0
  204. package/deps/zlib/doc/rfc1951.txt +955 -0
  205. package/deps/zlib/doc/rfc1952.txt +675 -0
  206. package/deps/zlib/doc/txtvsbin.txt +107 -0
  207. package/deps/zlib/examples/README.examples +54 -0
  208. package/deps/zlib/examples/enough.c +597 -0
  209. package/deps/zlib/examples/fitblk.c +233 -0
  210. package/deps/zlib/examples/gun.c +702 -0
  211. package/deps/zlib/examples/gzappend.c +504 -0
  212. package/deps/zlib/examples/gzjoin.c +449 -0
  213. package/deps/zlib/examples/gzlog.c +1061 -0
  214. package/deps/zlib/examples/gzlog.h +91 -0
  215. package/deps/zlib/examples/gznorm.c +474 -0
  216. package/deps/zlib/examples/zlib_how.html +550 -0
  217. package/deps/zlib/examples/zpipe.c +206 -0
  218. package/deps/zlib/examples/zran.c +546 -0
  219. package/deps/zlib/examples/zran.h +53 -0
  220. package/deps/zlib/gzclose.c +23 -0
  221. package/deps/zlib/gzguts.h +216 -0
  222. package/deps/zlib/gzlib.c +609 -0
  223. package/deps/zlib/gzread.c +668 -0
  224. package/deps/zlib/gzwrite.c +700 -0
  225. package/deps/zlib/infback.c +581 -0
  226. package/deps/zlib/inffast.c +321 -0
  227. package/deps/zlib/inffast.h +11 -0
  228. package/deps/zlib/inffixed.h +94 -0
  229. package/deps/zlib/inflate.c +1413 -0
  230. package/deps/zlib/inflate.h +126 -0
  231. package/deps/zlib/inftrees.c +424 -0
  232. package/deps/zlib/inftrees.h +64 -0
  233. package/deps/zlib/make_vms.com +867 -0
  234. package/deps/zlib/msdos/Makefile.bor +115 -0
  235. package/deps/zlib/msdos/Makefile.dj2 +104 -0
  236. package/deps/zlib/msdos/Makefile.emx +69 -0
  237. package/deps/zlib/msdos/Makefile.msc +112 -0
  238. package/deps/zlib/msdos/Makefile.tc +100 -0
  239. package/deps/zlib/os400/README400 +48 -0
  240. package/deps/zlib/os400/bndsrc +144 -0
  241. package/deps/zlib/os400/make.sh +383 -0
  242. package/deps/zlib/os400/zlibfixed.rpgle +578 -0
  243. package/deps/zlib/os400/zlibfree.rpgle +634 -0
  244. package/deps/zlib/qnx/package.qpg +141 -0
  245. package/deps/zlib/test/CMakeLists.txt +318 -0
  246. package/deps/zlib/test/add_subdirectory_exclude_test.cmake.in +29 -0
  247. package/deps/zlib/test/add_subdirectory_test.cmake.in +28 -0
  248. package/deps/zlib/test/example.c +552 -0
  249. package/deps/zlib/test/find_package_no_components_test.cmake.in +27 -0
  250. package/deps/zlib/test/find_package_test.cmake.in +27 -0
  251. package/deps/zlib/test/find_package_wrong_components_test.cmake.in +27 -0
  252. package/deps/zlib/test/infcover.c +672 -0
  253. package/deps/zlib/test/minigzip.c +592 -0
  254. package/deps/zlib/treebuild.xml +116 -0
  255. package/deps/zlib/trees.c +1119 -0
  256. package/deps/zlib/trees.h +128 -0
  257. package/deps/zlib/uncompr.c +101 -0
  258. package/deps/zlib/watcom/watcom_f.mak +43 -0
  259. package/deps/zlib/watcom/watcom_l.mak +43 -0
  260. package/deps/zlib/win32/DLL_FAQ.txt +381 -0
  261. package/deps/zlib/win32/Makefile.bor +109 -0
  262. package/deps/zlib/win32/Makefile.gcc +177 -0
  263. package/deps/zlib/win32/Makefile.msc +159 -0
  264. package/deps/zlib/win32/README-WIN32.txt +103 -0
  265. package/deps/zlib/win32/VisualC.txt +3 -0
  266. package/deps/zlib/win32/zlib.def +104 -0
  267. package/deps/zlib/win32/zlib1.rc +37 -0
  268. package/deps/zlib/zconf.h.in +551 -0
  269. package/deps/zlib/zlib.3 +149 -0
  270. package/deps/zlib/zlib.3.pdf +0 -0
  271. package/deps/zlib/zlib.h +2057 -0
  272. package/deps/zlib/zlib.map +116 -0
  273. package/deps/zlib/zlib.pc.cmakein +14 -0
  274. package/deps/zlib/zlib.pc.in +14 -0
  275. package/deps/zlib/zlibConfig.cmake.in +18 -0
  276. package/deps/zlib/zutil.c +313 -0
  277. package/deps/zlib/zutil.h +331 -0
  278. package/dist/index.d.ts +266 -0
  279. package/dist/index.js +1146 -0
  280. package/dist/libwz.js +5632 -0
  281. package/dist/libwz.wasm +0 -0
  282. package/include/wz/CRC32.h +182 -0
  283. package/include/wz/PngUtility.h +72 -0
  284. package/include/wz/PortalType.h +124 -0
  285. package/include/wz/Properties/WzBinaryProperty.h +70 -0
  286. package/include/wz/Properties/WzCanvasProperty.h +55 -0
  287. package/include/wz/Properties/WzConvexProperty.h +34 -0
  288. package/include/wz/Properties/WzDoubleProperty.h +32 -0
  289. package/include/wz/Properties/WzFloatProperty.h +30 -0
  290. package/include/wz/Properties/WzIntProperty.h +30 -0
  291. package/include/wz/Properties/WzLongProperty.h +30 -0
  292. package/include/wz/Properties/WzLuaProperty.h +31 -0
  293. package/include/wz/Properties/WzNullProperty.h +15 -0
  294. package/include/wz/Properties/WzPngProperty.h +53 -0
  295. package/include/wz/Properties/WzRawDataProperty.h +46 -0
  296. package/include/wz/Properties/WzShortProperty.h +31 -0
  297. package/include/wz/Properties/WzStringProperty.h +32 -0
  298. package/include/wz/Properties/WzSubProperty.h +35 -0
  299. package/include/wz/Properties/WzUOLProperty.h +44 -0
  300. package/include/wz/Properties/WzVectorProperty.h +40 -0
  301. package/include/wz/Properties/WzVideoProperty.h +43 -0
  302. package/include/wz/Result.h +58 -0
  303. package/include/wz/Util/Defines.h +16 -0
  304. package/include/wz/Util/ListFileParser.h +20 -0
  305. package/include/wz/Util/WzBinaryReader.h +95 -0
  306. package/include/wz/Util/WzBinaryWriter.h +72 -0
  307. package/include/wz/Util/WzBlobDataSource.h +30 -0
  308. package/include/wz/Util/WzDataSource.h +49 -0
  309. package/include/wz/Util/WzKeyGenerator.h +28 -0
  310. package/include/wz/Util/WzMutableKey.h +39 -0
  311. package/include/wz/Util/WzPath.h +37 -0
  312. package/include/wz/Util/WzStream.h +86 -0
  313. package/include/wz/Util/WzTool.h +42 -0
  314. package/include/wz/WzAESConstant.h +17 -0
  315. package/include/wz/WzDirectory.h +97 -0
  316. package/include/wz/WzEnums.h +76 -0
  317. package/include/wz/WzFile.h +99 -0
  318. package/include/wz/WzHeader.h +47 -0
  319. package/include/wz/WzImage.h +97 -0
  320. package/include/wz/WzImageProperty.h +92 -0
  321. package/include/wz/WzObject.h +55 -0
  322. package/include/wz/WzPropertyCollection.h +115 -0
  323. package/include/wz/wz.h +41 -0
  324. package/include/wz/wz_api.h +432 -0
  325. package/package.json +93 -0
  326. package/src/PngUtility.cpp +328 -0
  327. package/src/Properties/WzBinaryProperty.cpp +183 -0
  328. package/src/Properties/WzCanvasProperty.cpp +262 -0
  329. package/src/Properties/WzConvexProperty.cpp +159 -0
  330. package/src/Properties/WzDoubleProperty.cpp +12 -0
  331. package/src/Properties/WzFloatProperty.cpp +17 -0
  332. package/src/Properties/WzIntProperty.cpp +12 -0
  333. package/src/Properties/WzLongProperty.cpp +12 -0
  334. package/src/Properties/WzLuaProperty.cpp +37 -0
  335. package/src/Properties/WzNullProperty.cpp +11 -0
  336. package/src/Properties/WzPngProperty.cpp +637 -0
  337. package/src/Properties/WzRawDataProperty.cpp +116 -0
  338. package/src/Properties/WzShortProperty.cpp +12 -0
  339. package/src/Properties/WzStringProperty.cpp +44 -0
  340. package/src/Properties/WzSubProperty.cpp +129 -0
  341. package/src/Properties/WzUOLProperty.cpp +136 -0
  342. package/src/Properties/WzVectorProperty.cpp +22 -0
  343. package/src/Properties/WzVideoProperty.cpp +115 -0
  344. package/src/Util/ListFileParser.cpp +48 -0
  345. package/src/Util/WzBinaryReader.cpp +368 -0
  346. package/src/Util/WzBinaryWriter.cpp +305 -0
  347. package/src/Util/WzBlobDataSource.cpp +47 -0
  348. package/src/Util/WzDataSource.cpp +61 -0
  349. package/src/Util/WzKeyGenerator.cpp +43 -0
  350. package/src/Util/WzMutableKey.cpp +59 -0
  351. package/src/Util/WzStream.cpp +196 -0
  352. package/src/Util/WzTool.cpp +266 -0
  353. package/src/WzAESConstant.cpp +12 -0
  354. package/src/WzDirectory.cpp +669 -0
  355. package/src/WzEnums.cpp +20 -0
  356. package/src/WzFile.cpp +450 -0
  357. package/src/WzImage.cpp +350 -0
  358. package/src/WzImageProperty.cpp +469 -0
  359. package/src/WzObject.cpp +174 -0
  360. package/src/WzPropertyCollection.cpp +84 -0
  361. package/src/capi/wz_api.cpp +1996 -0
  362. package/src/node/binding.cpp +1776 -0
@@ -0,0 +1,193 @@
1
+ # if we are built from with zlib, use this path's)
2
+ if(DEFINED ZLIB_BUILD_BLAST)
3
+ set(WORK_DIR ${zlib_BINARY_DIR})
4
+ set(inst_setup zlib_install)
5
+ else(DEFINED ZLIB_BUILD_BLAST)
6
+ set(WORK_DIR ${blast_BINARY_DIR})
7
+ set(inst_setup zlib_blast_install)
8
+ set(ZLIB_ARG "-DZLIB_DIR=${ZLIB_DIR}")
9
+
10
+ add_test(
11
+ NAME zlib_blast_install
12
+ COMMAND ${CMAKE_COMMAND} --install ${blast_BINARY_DIR} --prefix
13
+ ${CMAKE_CURRENT_BINARY_DIR}/test_install --config $<CONFIG>
14
+ WORKING_DIRECTORY ${blast_BINARY_DIR})
15
+
16
+ set_tests_properties(zlib_blast_install
17
+ PROPERTIES
18
+ FIXTURES_SETUP zlib_blast_install)
19
+ endif(DEFINED ZLIB_BUILD_BLAST)
20
+
21
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test)
22
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test)
23
+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test)
24
+
25
+ configure_file(
26
+ ${CMAKE_CURRENT_SOURCE_DIR}/find_package_test.cmake.in
27
+ ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test/CMakeLists.txt @ONLY)
28
+
29
+ configure_file(
30
+ ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_test.cmake.in
31
+ ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test/CMakeLists.txt @ONLY)
32
+
33
+ configure_file(
34
+ ${CMAKE_CURRENT_SOURCE_DIR}/add_subdirectory_exclude_test.cmake.in
35
+ ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test/CMakeLists.txt
36
+ @ONLY)
37
+
38
+ configure_file(
39
+ ${CMAKE_CURRENT_SOURCE_DIR}/find_package_no_components_test.cmake.in
40
+ ${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test/CMakeLists.txt
41
+ @ONLY)
42
+
43
+ configure_file(
44
+ ${CMAKE_CURRENT_SOURCE_DIR}/find_package_wrong_components_test.cmake.in
45
+ ${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test/CMakeLists.txt
46
+ @ONLY)
47
+
48
+ # CMAKE_GENERATOR_PLATFORM doesn't work in the if
49
+ set(GENERATOR ${CMAKE_GENERATOR_PLATFORM})
50
+
51
+ if(GENERATOR)
52
+ set(PLATFORM "-A ${GENERATOR}")
53
+ endif(GENERATOR)
54
+
55
+ #
56
+ # findpackage_test
57
+ #
58
+ add_test(
59
+ NAME zlib_blast_find_package_configure
60
+ COMMAND
61
+ ${CMAKE_COMMAND} ${PLATFORM}
62
+ -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build
63
+ -DCMAKE_BUILD_TYPE=$<CONFIG>
64
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
65
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
66
+ -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG}
67
+ --fresh
68
+ -G "${CMAKE_GENERATOR}"
69
+ -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_test)
70
+
71
+ add_test(
72
+ NAME zlib_blast_find_package_build
73
+ COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
74
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/findpackage_test_build)
75
+
76
+ set_tests_properties(
77
+ zlib_blast_find_package_configure
78
+ PROPERTIES
79
+ FIXTURES_REQUIRED ${inst_setup}
80
+ FIXTURES_SETUP blast_fp_config)
81
+
82
+ set_tests_properties(zlib_blast_find_package_build
83
+ PROPERTIES
84
+ FIXTURES_REQUIRED blast_fp_config)
85
+
86
+ #
87
+ # add_subdirectory_test
88
+ #
89
+ add_test(
90
+ NAME zlib_blast_add_subdirectory_configure
91
+ COMMAND
92
+ ${CMAKE_COMMAND} ${PLATFORM}
93
+ -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build
94
+ -DCMAKE_BUILD_TYPE=$<CONFIG>
95
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
96
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
97
+ -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG}
98
+ --fresh
99
+ -G "${CMAKE_GENERATOR}"
100
+ -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test)
101
+
102
+ add_test(
103
+ NAME zlib_blast_add_subdirectory_build
104
+ COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
105
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_test_build)
106
+
107
+ set_tests_properties(
108
+ zlib_blast_add_subdirectory_configure
109
+ PROPERTIES
110
+ FIXTURES_REQUIRED ${inst_setup}
111
+ FIXTURES_SETUP blast_as_config)
112
+
113
+ set_tests_properties(zlib_blast_add_subdirectory_build
114
+ PROPERTIES
115
+ FIXTURES_REQUIRED blast_as_config)
116
+
117
+ #
118
+ # add_subdirectory_exclude_test
119
+ #
120
+ add_test(
121
+ NAME zlib_blast_add_subdirectory_exclude_configure
122
+ COMMAND
123
+ ${CMAKE_COMMAND} ${PLATFORM}
124
+ -B${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build
125
+ -DCMAKE_BUILD_TYPE=$<CONFIG>
126
+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
127
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
128
+ -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG}
129
+ --fresh
130
+ -G "${CMAKE_GENERATOR}"
131
+ -S${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test)
132
+
133
+ add_test(
134
+ NAME zlib_blast_add_subdirectory_exclude_build
135
+ COMMAND ${CMAKE_COMMAND} --build . --config $<CONFIG>
136
+ WORKING_DIRECTORY
137
+ ${CMAKE_CURRENT_BINARY_DIR}/add_subdirectory_exclude_test_build)
138
+
139
+ set_tests_properties(zlib_blast_add_subdirectory_exclude_configure
140
+ PROPERTIES
141
+ FIXTURES_REQUIRED ${inst_setup}
142
+ FIXTURES_SETUP blast_asx_config)
143
+
144
+ set_tests_properties(zlib_blast_add_subdirectory_exclude_build
145
+ PROPERTIES
146
+ FIXTURES_REQUIRED blast_asx_config)
147
+
148
+ #
149
+ # findpackage_no_components_test
150
+ #
151
+ add_test(
152
+ NAME zlib_blast_find_package_no_components_configure
153
+ COMMAND
154
+ ${CMAKE_COMMAND} ${PLATFORM}
155
+ -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test_build
156
+ -DCMAKE_BUILD_TYPE=$<CONFIG> -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
157
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
158
+ -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG}
159
+ --fresh
160
+ -G "${CMAKE_GENERATOR}"
161
+ -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_no_components_test)
162
+
163
+ set_tests_properties(
164
+ zlib_blast_find_package_no_components_configure
165
+ PROPERTIES
166
+ FIXTURES_REQUIRED ${inst_setup})
167
+
168
+ if(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC)
169
+ set_tests_properties(zlib_blast_find_package_no_components_configure
170
+ PROPERTIES
171
+ WILL_FAIL TRUE)
172
+ endif(NOT ZLIB_BLAST_BUILD_SHARED OR NOT ZLIB_BLAST_BUILD_STATIC)
173
+
174
+ #
175
+ # findpackage_wrong_components_test
176
+ #
177
+ add_test(
178
+ NAME zlib_blast_find_package_wrong_components_configure
179
+ COMMAND
180
+ ${CMAKE_COMMAND} ${PLATFORM}
181
+ -B${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test_build
182
+ -DCMAKE_BUILD_TYPE=$<CONFIG> -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
183
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
184
+ -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/test/test_install ${ZLIB_ARG}
185
+ --fresh
186
+ -G "${CMAKE_GENERATOR}"
187
+ -S${CMAKE_CURRENT_BINARY_DIR}/findpackage_wrong_components_test)
188
+
189
+ set_tests_properties(zlib_blast_find_package_wrong_components_configure
190
+ PROPERTIES
191
+ FIXTURES_REQUIRED ${inst_setup}
192
+ WILL_FAIL TRUE)
193
+
@@ -0,0 +1,27 @@
1
+ cmake_minimum_required(VERSION 3.12...3.31)
2
+
3
+ project(
4
+ blast_find_package
5
+ LANGUAGES C
6
+ VERSION @blast_VERSION@)
7
+
8
+ option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_BLAST_BUILD_SHARED@)
9
+ option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_BLAST_BUILD_STATIC@)
10
+ option(ZLIB_BLAST_BUILD_TESTING "" @ZLIB_BLAST_BUILD_TESTING@)
11
+
12
+ add_subdirectory(@blast_SOURCE_DIR@
13
+ ${CMAKE_CURRENT_BINARY_DIR}/blast
14
+ EXCLUDE_FROM_ALL)
15
+
16
+ set(BLAST_SRCS
17
+ @blast_SOURCE_DIR@/blast-test.c)
18
+
19
+ if(ZLIB_BLAST_BUILD_SHARED)
20
+ add_executable(test_example ${BLAST_SRCS})
21
+ target_link_libraries(test_example BLAST::BLAST)
22
+ endif(ZLIB_BLAST_BUILD_SHARED)
23
+
24
+ if(ZLIB_BLAST_BUILD_STATIC)
25
+ add_executable(test_example_static ${BLAST_SRCS})
26
+ target_link_libraries(test_example_static BLAST::BLASTSTATIC)
27
+ endif(ZLIB_BLAST_BUILD_STATIC)
@@ -0,0 +1,25 @@
1
+ cmake_minimum_required(VERSION 3.12...3.31)
2
+
3
+ project(
4
+ blast_find_package
5
+ LANGUAGES C
6
+ VERSION @blast_VERSION@)
7
+
8
+ option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_BLAST_BUILD_SHARED@)
9
+ option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_BLAST_BUILD_STATIC@)
10
+ option(ZLIB_BLAST_BUILD_TESTING "" @ZLIB_BLAST_BUILD_TESTING@)
11
+
12
+ add_subdirectory(@blast_SOURCE_DIR@ ${CMAKE_CURRENT_BINARY_DIR}/blast)
13
+
14
+ set(BLAST_SRCS
15
+ @blast_SOURCE_DIR@/blast-test.c)
16
+
17
+ if(ZLIB_BLAST_BUILD_SHARED)
18
+ add_executable(test_example ${BLAST_SRCS})
19
+ target_link_libraries(test_example BLAST::BLAST)
20
+ endif(ZLIB_BLAST_BUILD_SHARED)
21
+
22
+ if(ZLIB_BLAST_BUILD_STATIC)
23
+ add_executable(test_example_static ${BLAST_SRCS})
24
+ target_link_libraries(test_example_static BLAST::BLASTSTATIC)
25
+ endif(ZLIB_BLAST_BUILD_STATIC)
@@ -0,0 +1,24 @@
1
+ cmake_minimum_required(VERSION 3.12...3.31)
2
+
3
+ project(
4
+ blast_find_package
5
+ LANGUAGES C
6
+ VERSION @blast_VERSION@)
7
+
8
+ option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_BLAST_BUILD_SHARED@)
9
+ option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_BLAST_BUILD_STATIC@)
10
+
11
+ find_package(blast REQUIRED CONFIG)
12
+
13
+ set(BLAST_SRCS
14
+ @blast_SOURCE_DIR@/blast-test.c)
15
+
16
+ if(ZLIB_BLAST_BUILD_SHARED)
17
+ add_executable(test_example ${BLAST_SRCS})
18
+ target_link_libraries(test_example BLAST::BLAST)
19
+ endif(ZLIB_BLAST_BUILD_SHARED)
20
+
21
+ if(ZLIB_BLAST_BUILD_STATIC)
22
+ add_executable(test_example_static ${BLAST_SRCS})
23
+ target_link_libraries(test_example_static BLAST::BLASTSTATIC)
24
+ endif(ZLIB_BLAST_BUILD_STATIC)
@@ -0,0 +1,24 @@
1
+ cmake_minimum_required(VERSION 3.12...3.31)
2
+
3
+ project(
4
+ blast_find_package
5
+ LANGUAGES C
6
+ VERSION @blast_VERSION@)
7
+
8
+ option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_BLAST_BUILD_SHARED@)
9
+ option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_BLAST_BUILD_STATIC@)
10
+
11
+ set(BLAST_SRCS
12
+ @blast_SOURCE_DIR@/blast-test.c)
13
+
14
+ if(ZLIB_BLAST_BUILD_SHARED)
15
+ find_package(blast REQUIRED COMPONENTS shared CONFIG)
16
+ add_executable(test_example ${BLAST_SRCS})
17
+ target_link_libraries(test_example BLAST::BLAST)
18
+ endif(ZLIB_BLAST_BUILD_SHARED)
19
+
20
+ if(ZLIB_BLAST_BUILD_STATIC)
21
+ find_package(blast REQUIRED COMPONENTS static CONFIG)
22
+ add_executable(test_example_static ${BLAST_SRCS})
23
+ target_link_libraries(test_example_static BLAST::BLASTSTATIC)
24
+ endif(ZLIB_BLAST_BUILD_STATIC)
@@ -0,0 +1,24 @@
1
+ cmake_minimum_required(VERSION 3.12...3.31)
2
+
3
+ project(
4
+ blast_find_package
5
+ LANGUAGES C
6
+ VERSION @blast_VERSION@)
7
+
8
+ option(ZLIB_BLAST_BUILD_SHARED "" @ZLIB_BLAST_BUILD_SHARED@)
9
+ option(ZLIB_BLAST_BUILD_STATIC "" @ZLIB_BLAST_BUILD_STATIC@)
10
+
11
+ find_package(blast REQUIRED COMPONENTS wrong CONFIG)
12
+
13
+ set(BLAST_SRCS
14
+ @blast_SOURCE_DIR@/blast-test.c)
15
+
16
+ if(ZLIB_BLAST_BUILD_SHARED)
17
+ add_executable(test_example ${BLAST_SRCS})
18
+ target_link_libraries(test_example BLAST::BLAST)
19
+ endif(ZLIB_BLAST_BUILD_SHARED)
20
+
21
+ if(ZLIB_BLAST_BUILD_STATIC)
22
+ add_executable(test_example_static ${BLAST_SRCS})
23
+ target_link_libraries(test_example_static BLAST::BLASTSTATIC)
24
+ endif(ZLIB_BLAST_BUILD_STATIC)
Binary file
@@ -0,0 +1 @@
1
+ AIAIAIAIAIAIA
@@ -0,0 +1,28 @@
1
+ cmake_minimum_required(VERSION 3.12...3.31)
2
+
3
+ #CMAKE_ARGV0 = ${CMAKE_COMMAND}
4
+ #CMAKE_ARGV1 = -P
5
+ #CMAKE_ARGV2 = ${CMAKE_CURRENT_SOURCE_DIR}/tester.cmake
6
+ #CMAKE_ARGV3 = "$<TARGET_FILE:blast-test>"
7
+ #CMAKE_ARGV4 = "${CMAKE_CURRENT_SOURCE_DIR}"
8
+ #CMAKE_ARGV5 = "${CMAKE_CURRENT_BINARY_DIR}")
9
+
10
+ execute_process(COMMAND ${CMAKE_ARGV3}
11
+ INPUT_FILE "${CMAKE_ARGV4}/test.pk"
12
+ OUTPUT_FILE "${CMAKE_ARGV5}/output.txt"
13
+ RESULT_VARIABLE RESULT)
14
+
15
+ if(RESULT)
16
+ message(FATAL_ERROR "Command exitited with: ${RESULT}")
17
+ endif(RESULT)
18
+
19
+ execute_process(COMMAND ${CMAKE_ARGV0} -E compare_files
20
+ "${CMAKE_ARGV4}/test.txt"
21
+ "${CMAKE_ARGV5}/output.txt"
22
+ RESULT_VARIABLE RESULT)
23
+
24
+ file(REMOVE "${CMAKE_ARGV5}/output.txt")
25
+
26
+ if(RESULT)
27
+ message(FATAL_ERROR "Files differ")
28
+ endif(RESULT)
@@ -0,0 +1,67 @@
1
+ # check if we compile for IBM s390x
2
+ #
3
+ CHECK_C_SOURCE_COMPILES("
4
+ #ifndef __s390x__
5
+ #error
6
+ #endif
7
+ int main() {return 0;}
8
+ " HAS_S390X_SUPPORT)
9
+
10
+ #
11
+ # Check for IBM S390X - VX extensions
12
+ #
13
+ if(ZLIB_WITH_CRC32VX AND HAS_S390X_SUPPORT)
14
+ # preset the compiler specific flags
15
+ if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
16
+ set(VGFMAFLAG "-fzvector")
17
+ else()
18
+ set(VGFMAFLAG "-mzarch")
19
+ endif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
20
+
21
+ set(S390X_VX_TEST
22
+ "#ifndef __s390x__ \n\
23
+ #error \n\
24
+ #endif \n\
25
+ #include <vecintrin.h> \n\
26
+ int main(void) { \
27
+ unsigned long long a __attribute__((vector_size(16))) = { 0 }; \
28
+ unsigned long long b __attribute__((vector_size(16))) = { 0 }; \
29
+ unsigned char c __attribute__((vector_size(16))) = { 0 }; \
30
+ c = vec_gfmsum_accum_128(a, b, c); \
31
+ return c[0]; \
32
+ }")
33
+
34
+ # cflags already contains a valid march
35
+ set(CMAKE_REQUIRED_FLAGS "${VGFMAFLAG}")
36
+ check_c_source_compiles("${S390X_VX_TEST}" HAS_S390X_VX_SUPPORT)
37
+ unset(CMAKE_REQUIRED_FLAGS)
38
+
39
+ # or set march for our compile units
40
+ if(NOT HAS_S390X_VX_SUPPORT)
41
+ set(CMAKE_REQUIRED_FLAGS "${VGFMAFLAG} -march=z13")
42
+ check_c_source_compiles("${S390X_VX_TEST}" HAS_Z13_S390X_VX_SUPPORT)
43
+ unset(CMAKE_REQUIRED_FLAGS )
44
+ list(APPEND VGFMAFLAG "-march=z13")
45
+ endif(NOT HAS_S390X_VX_SUPPORT)
46
+
47
+ # prepare compiling for s390x
48
+ if(HAS_S390X_VX_SUPPORT OR HAS_Z13_S390X_VX_SUPPORT)
49
+ if(ZLIB_BUILD_SHARED)
50
+ target_sources(zlib
51
+ PRIVATE
52
+ crc32_vx.c
53
+ crc32_vx_hooks.h)
54
+ target_compile_definitions(zlib PUBLIC -DHAVE_S390X_VX=1)
55
+ endif(ZLIB_BUILD_SHARED)
56
+ if(ZLIB_BUILD_STATIC)
57
+ target_sources(zlibstatic
58
+ PRIVATE
59
+ crc32_vx.c
60
+ crc32_vx_hooks.h)
61
+ target_compile_definitions(zlibstatic PUBLIC -DHAVE_S390X_VX=1)
62
+ endif(ZLIB_BUILD_STATIC)
63
+ set_source_files_properties(
64
+ crc32_vx.c
65
+ PROPERTIES COMPILE_OPTIONS "${VGFMAFLAG}")
66
+ endif(HAS_S390X_VX_SUPPORT OR HAS_Z13_S390X_VX_SUPPORT)
67
+ endif(ZLIB_WITH_CRC32VX AND HAS_S390X_SUPPORT)
@@ -0,0 +1,9 @@
1
+ IBM Z mainframes starting from version z13 provide vector instructions, which
2
+ allows vectorization of crc32. This extension is build by default when targeting
3
+ ibm s390x. However this extension can disabled if desired:
4
+
5
+ # for configure build
6
+ $ ./configure --disable-crcvx
7
+
8
+ # for cmake build
9
+ $ cmake .. -DZLIB_CRC32VX=off
@@ -0,0 +1,254 @@
1
+ /*
2
+ * Hardware-accelerated CRC-32 variants for Linux on z Systems
3
+ *
4
+ * Use the z/Architecture Vector Extension Facility to accelerate the
5
+ * computing of bitreflected CRC-32 checksums.
6
+ *
7
+ * This CRC-32 implementation algorithm is bitreflected and processes
8
+ * the least-significant bit first (Little-Endian).
9
+ *
10
+ * This code was originally written by Hendrik Brueckner
11
+ * <brueckner@linux.vnet.ibm.com> for use in the Linux kernel and has been
12
+ * relicensed under the zlib license.
13
+ */
14
+ #define Z_ONCE
15
+ #include "../../zutil.h"
16
+ #include "crc32_vx_hooks.h"
17
+
18
+ #include <stdint.h>
19
+ #include <stdio.h>
20
+ #include <vecintrin.h>
21
+ #include <sys/auxv.h>
22
+
23
+ #ifdef __clang__
24
+ # if ((__clang_major__ == 18) || (__clang_major__ == 19 && (__clang_minor__ < 1 || (__clang_minor__ == 1 && __clang_patchlevel__ < 2))))
25
+ # error crc32_vx optimizations are broken due to compiler bug in Clang versions: 18.0.0 <= clang_version < 19.1.2. \
26
+ Either disable the zlib crc32_vx optimization, or switch to another compiler/compiler version.
27
+ # endif
28
+ #endif
29
+
30
+ #define VX_MIN_LEN 64
31
+ #define VX_ALIGNMENT 16L
32
+ #define VX_ALIGN_MASK (VX_ALIGNMENT - 1)
33
+
34
+ typedef unsigned char uv16qi __attribute__((vector_size(16)));
35
+ typedef unsigned int uv4si __attribute__((vector_size(16)));
36
+ typedef unsigned long long uv2di __attribute__((vector_size(16)));
37
+
38
+ local uint32_t crc32_le_vgfm_16(uint32_t crc, const unsigned char *buf, size_t len) {
39
+ /*
40
+ * The CRC-32 constant block contains reduction constants to fold and
41
+ * process particular chunks of the input data stream in parallel.
42
+ *
43
+ * For the CRC-32 variants, the constants are precomputed according to
44
+ * these definitions:
45
+ *
46
+ * R1 = [(x4*128+32 mod P'(x) << 32)]' << 1
47
+ * R2 = [(x4*128-32 mod P'(x) << 32)]' << 1
48
+ * R3 = [(x128+32 mod P'(x) << 32)]' << 1
49
+ * R4 = [(x128-32 mod P'(x) << 32)]' << 1
50
+ * R5 = [(x64 mod P'(x) << 32)]' << 1
51
+ * R6 = [(x32 mod P'(x) << 32)]' << 1
52
+ *
53
+ * The bitreflected Barret reduction constant, u', is defined as
54
+ * the bit reversal of floor(x**64 / P(x)).
55
+ *
56
+ * where P(x) is the polynomial in the normal domain and the P'(x) is the
57
+ * polynomial in the reversed (bitreflected) domain.
58
+ *
59
+ * CRC-32 (IEEE 802.3 Ethernet, ...) polynomials:
60
+ *
61
+ * P(x) = 0x04C11DB7
62
+ * P'(x) = 0xEDB88320
63
+ */
64
+ const uv16qi perm_le2be = {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; /* BE->LE mask */
65
+ const uv2di r2r1 = {0x1C6E41596, 0x154442BD4}; /* R2, R1 */
66
+ const uv2di r4r3 = {0x0CCAA009E, 0x1751997D0}; /* R4, R3 */
67
+ const uv2di r5 = {0, 0x163CD6124}; /* R5 */
68
+ const uv2di ru_poly = {0, 0x1F7011641}; /* u' */
69
+ const uv2di crc_poly = {0, 0x1DB710641}; /* P'(x) << 1 */
70
+
71
+ /*
72
+ * Load the initial CRC value.
73
+ *
74
+ * The CRC value is loaded into the rightmost word of the
75
+ * vector register and is later XORed with the LSB portion
76
+ * of the loaded input data.
77
+ */
78
+ uv2di v0 = {0, 0};
79
+ v0 = (uv2di)vec_insert(crc, (uv4si)v0, 3);
80
+
81
+ /* Load a 64-byte data chunk and XOR with CRC */
82
+ uv2di v1 = vec_perm(((uv2di *)buf)[0], ((uv2di *)buf)[0], perm_le2be);
83
+ uv2di v2 = vec_perm(((uv2di *)buf)[1], ((uv2di *)buf)[1], perm_le2be);
84
+ uv2di v3 = vec_perm(((uv2di *)buf)[2], ((uv2di *)buf)[2], perm_le2be);
85
+ uv2di v4 = vec_perm(((uv2di *)buf)[3], ((uv2di *)buf)[3], perm_le2be);
86
+
87
+ v1 ^= v0;
88
+ buf += 64;
89
+ len -= 64;
90
+
91
+ while (len >= 64) {
92
+ /* Load the next 64-byte data chunk */
93
+ uv16qi part1 = vec_perm(((uv16qi *)buf)[0], ((uv16qi *)buf)[0], perm_le2be);
94
+ uv16qi part2 = vec_perm(((uv16qi *)buf)[1], ((uv16qi *)buf)[1], perm_le2be);
95
+ uv16qi part3 = vec_perm(((uv16qi *)buf)[2], ((uv16qi *)buf)[2], perm_le2be);
96
+ uv16qi part4 = vec_perm(((uv16qi *)buf)[3], ((uv16qi *)buf)[3], perm_le2be);
97
+
98
+ /*
99
+ * Perform a GF(2) multiplication of the doublewords in V1 with
100
+ * the R1 and R2 reduction constants in V0. The intermediate result
101
+ * is then folded (accumulated) with the next data chunk in PART1 and
102
+ * stored in V1. Repeat this step for the register contents
103
+ * in V2, V3, and V4 respectively.
104
+ */
105
+ v1 = (uv2di)vec_gfmsum_accum_128(r2r1, v1, part1);
106
+ v2 = (uv2di)vec_gfmsum_accum_128(r2r1, v2, part2);
107
+ v3 = (uv2di)vec_gfmsum_accum_128(r2r1, v3, part3);
108
+ v4 = (uv2di)vec_gfmsum_accum_128(r2r1, v4, part4);
109
+
110
+ buf += 64;
111
+ len -= 64;
112
+ }
113
+
114
+ /*
115
+ * Fold V1 to V4 into a single 128-bit value in V1. Multiply V1 with R3
116
+ * and R4 and accumulating the next 128-bit chunk until a single 128-bit
117
+ * value remains.
118
+ */
119
+ v1 = (uv2di)vec_gfmsum_accum_128(r4r3, v1, (uv16qi)v2);
120
+ v1 = (uv2di)vec_gfmsum_accum_128(r4r3, v1, (uv16qi)v3);
121
+ v1 = (uv2di)vec_gfmsum_accum_128(r4r3, v1, (uv16qi)v4);
122
+
123
+ while (len >= 16) {
124
+ /* Load next data chunk */
125
+ v2 = vec_perm(*(uv2di *)buf, *(uv2di *)buf, perm_le2be);
126
+
127
+ /* Fold next data chunk */
128
+ v1 = (uv2di)vec_gfmsum_accum_128(r4r3, v1, (uv16qi)v2);
129
+
130
+ buf += 16;
131
+ len -= 16;
132
+ }
133
+
134
+ /*
135
+ * Set up a vector register for byte shifts. The shift value must
136
+ * be loaded in bits 1-4 in byte element 7 of a vector register.
137
+ * Shift by 8 bytes: 0x40
138
+ * Shift by 4 bytes: 0x20
139
+ */
140
+ uv16qi v9 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
141
+ v9 = vec_insert((unsigned char)0x40, v9, 7);
142
+
143
+ /*
144
+ * Prepare V0 for the next GF(2) multiplication: shift V0 by 8 bytes
145
+ * to move R4 into the rightmost doubleword and set the leftmost
146
+ * doubleword to 0x1.
147
+ */
148
+ v0 = vec_srb(r4r3, (uv2di)v9);
149
+ v0[0] = 1;
150
+
151
+ /*
152
+ * Compute GF(2) product of V1 and V0. The rightmost doubleword
153
+ * of V1 is multiplied with R4. The leftmost doubleword of V1 is
154
+ * multiplied by 0x1 and is then XORed with rightmost product.
155
+ * Implicitly, the intermediate leftmost product becomes padded
156
+ */
157
+ v1 = (uv2di)vec_gfmsum_128(v0, v1);
158
+
159
+ /*
160
+ * Now do the final 32-bit fold by multiplying the rightmost word
161
+ * in V1 with R5 and XOR the result with the remaining bits in V1.
162
+ *
163
+ * To achieve this by a single VGFMAG, right shift V1 by a word
164
+ * and store the result in V2 which is then accumulated. Use the
165
+ * vector unpack instruction to load the rightmost half of the
166
+ * doubleword into the rightmost doubleword element of V1; the other
167
+ * half is loaded in the leftmost doubleword.
168
+ * The vector register with CONST_R5 contains the R5 constant in the
169
+ * rightmost doubleword and the leftmost doubleword is zero to ignore
170
+ * the leftmost product of V1.
171
+ */
172
+ v9 = vec_insert((unsigned char)0x20, v9, 7);
173
+ v2 = vec_srb(v1, (uv2di)v9);
174
+ v1 = vec_unpackl((uv4si)v1); /* Split rightmost doubleword */
175
+ v1 = (uv2di)vec_gfmsum_accum_128(r5, v1, (uv16qi)v2);
176
+
177
+ /*
178
+ * Apply a Barret reduction to compute the final 32-bit CRC value.
179
+ *
180
+ * The input values to the Barret reduction are the degree-63 polynomial
181
+ * in V1 (R(x)), degree-32 generator polynomial, and the reduction
182
+ * constant u. The Barret reduction result is the CRC value of R(x) mod
183
+ * P(x).
184
+ *
185
+ * The Barret reduction algorithm is defined as:
186
+ *
187
+ * 1. T1(x) = floor( R(x) / x^32 ) GF2MUL u
188
+ * 2. T2(x) = floor( T1(x) / x^32 ) GF2MUL P(x)
189
+ * 3. C(x) = R(x) XOR T2(x) mod x^32
190
+ *
191
+ * Note: The leftmost doubleword of vector register containing
192
+ * CONST_RU_POLY is zero and, thus, the intermediate GF(2) product
193
+ * is zero and does not contribute to the final result.
194
+ */
195
+
196
+ /* T1(x) = floor( R(x) / x^32 ) GF2MUL u */
197
+ v2 = vec_unpackl((uv4si)v1);
198
+ v2 = (uv2di)vec_gfmsum_128(ru_poly, v2);
199
+
200
+ /*
201
+ * Compute the GF(2) product of the CRC polynomial with T1(x) in
202
+ * V2 and XOR the intermediate result, T2(x), with the value in V1.
203
+ * The final result is stored in word element 2 of V2.
204
+ */
205
+ v2 = vec_unpackl((uv4si)v2);
206
+ v2 = (uv2di)vec_gfmsum_accum_128(crc_poly, v2, (uv16qi)v1);
207
+
208
+ return ((uv4si)v2)[2];
209
+ }
210
+
211
+
212
+ local unsigned long s390_crc32_vx(unsigned long crc, const unsigned char FAR *buf, z_size_t len)
213
+ {
214
+ uintptr_t prealign, aligned, remaining;
215
+
216
+ if (buf == Z_NULL) return 0UL;
217
+
218
+ if (len < VX_MIN_LEN + VX_ALIGN_MASK)
219
+ return crc32_z(crc, buf, len);
220
+
221
+ if ((uintptr_t)buf & VX_ALIGN_MASK) {
222
+ prealign = VX_ALIGNMENT - ((uintptr_t)buf & VX_ALIGN_MASK);
223
+ len -= prealign;
224
+ crc = crc32_z(crc, buf, prealign);
225
+ buf += prealign;
226
+ }
227
+ aligned = len & ~VX_ALIGN_MASK;
228
+ remaining = len & VX_ALIGN_MASK;
229
+
230
+ crc = crc32_le_vgfm_16(crc ^ 0xffffffff, buf, (size_t)aligned) ^ 0xffffffff;
231
+
232
+ if (remaining)
233
+ crc = crc32_z(crc, buf + aligned, remaining);
234
+
235
+ return crc;
236
+ }
237
+
238
+ local z_once_t s390_crc32_made = Z_ONCE_INIT;
239
+ local void s390_crc32_setup() {
240
+ unsigned long hwcap = getauxval(AT_HWCAP);
241
+
242
+ if (hwcap & HWCAP_S390_VX)
243
+ crc32_z_hook = s390_crc32_vx;
244
+ else
245
+ crc32_z_hook = crc32_z;
246
+ }
247
+
248
+ local unsigned long s390_crc32_init(unsigned long crc, const unsigned char FAR *buf, z_size_t len)
249
+ {
250
+ z_once(&s390_crc32_made,s390_crc32_setup);
251
+ return crc32_z_hook(crc, buf, len);
252
+ }
253
+
254
+ ZLIB_INTERNAL unsigned long (*crc32_z_hook)(unsigned long crc, const unsigned char FAR *buf, z_size_t len) = s390_crc32_init;