hdiffpatch 1.0.0__cp39-cp39-win32.whl

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 (2254) hide show
  1. hdiffpatch/__init__.py +67 -0
  2. hdiffpatch/_base_config.py +56 -0
  3. hdiffpatch/_bzip2_config.py +102 -0
  4. hdiffpatch/_c_extension.cp39-win32.pyd +0 -0
  5. hdiffpatch/_c_extension.pyi +121 -0
  6. hdiffpatch/_c_extension.pyx +1068 -0
  7. hdiffpatch/_c_src/HDiffPatch/.git +1 -0
  8. hdiffpatch/_c_src/HDiffPatch/.github/workflows/ci.yml +134 -0
  9. hdiffpatch/_c_src/HDiffPatch/.gitignore +23 -0
  10. hdiffpatch/_c_src/HDiffPatch/CHANGELOG.md +244 -0
  11. hdiffpatch/_c_src/HDiffPatch/LICENSE +48 -0
  12. hdiffpatch/_c_src/HDiffPatch/Makefile +425 -0
  13. hdiffpatch/_c_src/HDiffPatch/README.md +528 -0
  14. hdiffpatch/_c_src/HDiffPatch/README_cn.md +525 -0
  15. hdiffpatch/_c_src/HDiffPatch/_atosize.h +83 -0
  16. hdiffpatch/_c_src/HDiffPatch/_clock_for_demo.h +55 -0
  17. hdiffpatch/_c_src/HDiffPatch/_dir_ignore.h +191 -0
  18. hdiffpatch/_c_src/HDiffPatch/bsdiff_wrapper/bsdiff_wrapper.cpp +380 -0
  19. hdiffpatch/_c_src/HDiffPatch/bsdiff_wrapper/bsdiff_wrapper.h +73 -0
  20. hdiffpatch/_c_src/HDiffPatch/bsdiff_wrapper/bspatch_wrapper.c +275 -0
  21. hdiffpatch/_c_src/HDiffPatch/bsdiff_wrapper/bspatch_wrapper.h +58 -0
  22. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +135 -0
  23. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +8 -0
  24. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/build_libs.bat +1 -0
  25. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/build_libs.sh +1 -0
  26. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/build_libs_patchers.bat +1 -0
  27. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/build_libs_patchers.sh +1 -0
  28. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +44 -0
  29. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +26 -0
  30. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +38 -0
  31. hdiffpatch/_c_src/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +21 -0
  32. hdiffpatch/_c_src/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +8 -0
  33. hdiffpatch/_c_src/HDiffPatch/builds/codeblocks/HDiffZ.cbp +400 -0
  34. hdiffpatch/_c_src/HDiffPatch/builds/codeblocks/HPatchZ.cbp +269 -0
  35. hdiffpatch/_c_src/HDiffPatch/builds/codeblocks/unitTest.cbp +79 -0
  36. hdiffpatch/_c_src/HDiffPatch/builds/vc/HDiffPatch.sln +191 -0
  37. hdiffpatch/_c_src/HDiffPatch/builds/vc/HDiffZ.vcxproj +456 -0
  38. hdiffpatch/_c_src/HDiffPatch/builds/vc/HPatchZ.vcxproj +439 -0
  39. hdiffpatch/_c_src/HDiffPatch/builds/vc/bzip2.vcxproj +302 -0
  40. hdiffpatch/_c_src/HDiffPatch/builds/vc/hpatchz_test.vcxproj +216 -0
  41. hdiffpatch/_c_src/HDiffPatch/builds/vc/libdeflate.vcxproj +332 -0
  42. hdiffpatch/_c_src/HDiffPatch/builds/vc/longPathAware.exe.manifest +7 -0
  43. hdiffpatch/_c_src/HDiffPatch/builds/vc/lzma.vcxproj +350 -0
  44. hdiffpatch/_c_src/HDiffPatch/builds/vc/testHashClash.vcxproj +294 -0
  45. hdiffpatch/_c_src/HDiffPatch/builds/vc/unitTest.vcxproj +369 -0
  46. hdiffpatch/_c_src/HDiffPatch/builds/vc/zlib.vcxproj +315 -0
  47. hdiffpatch/_c_src/HDiffPatch/builds/vc/zstd.vcxproj +357 -0
  48. hdiffpatch/_c_src/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +39 -0
  49. hdiffpatch/_c_src/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  50. hdiffpatch/_c_src/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  51. hdiffpatch/_c_src/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +447 -0
  52. hdiffpatch/_c_src/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  53. hdiffpatch/_c_src/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +655 -0
  54. hdiffpatch/_c_src/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  55. hdiffpatch/_c_src/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  56. hdiffpatch/_c_src/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +410 -0
  57. hdiffpatch/_c_src/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  58. hdiffpatch/_c_src/HDiffPatch/builds/xcode/libdeflate.xcodeproj/project.pbxproj +286 -0
  59. hdiffpatch/_c_src/HDiffPatch/builds/xcode/libdeflate.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  60. hdiffpatch/_c_src/HDiffPatch/builds/xcode/lz4.xcodeproj/project.pbxproj +268 -0
  61. hdiffpatch/_c_src/HDiffPatch/builds/xcode/lz4.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  62. hdiffpatch/_c_src/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +585 -0
  63. hdiffpatch/_c_src/HDiffPatch/builds/xcode/lzma.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  64. hdiffpatch/_c_src/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +301 -0
  65. hdiffpatch/_c_src/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  66. hdiffpatch/_c_src/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  67. hdiffpatch/_c_src/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +549 -0
  68. hdiffpatch/_c_src/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  69. hdiffpatch/_c_src/HDiffPatch/builds/xcode/zlib.xcodeproj/project.pbxproj +308 -0
  70. hdiffpatch/_c_src/HDiffPatch/builds/xcode/zlib.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  71. hdiffpatch/_c_src/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +515 -0
  72. hdiffpatch/_c_src/HDiffPatch/builds/xcode/zstd.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  73. hdiffpatch/_c_src/HDiffPatch/builds/xcode_iOS_hpatchz/hpatch_objc/hpatch_objc.h +30 -0
  74. hdiffpatch/_c_src/HDiffPatch/builds/xcode_iOS_hpatchz/hpatch_objc/hpatch_objc.m +32 -0
  75. hdiffpatch/_c_src/HDiffPatch/builds/xcode_iOS_hpatchz/hpatchz.xcodeproj/project.pbxproj +745 -0
  76. hdiffpatch/_c_src/HDiffPatch/builds/xcode_iOS_hpatchz/hpatchz.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  77. hdiffpatch/_c_src/HDiffPatch/builds/xcode_iOS_hpatchz/hpatchz.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  78. hdiffpatch/_c_src/HDiffPatch/checksum_plugin_demo.h +716 -0
  79. hdiffpatch/_c_src/HDiffPatch/compress_parallel.cpp +201 -0
  80. hdiffpatch/_c_src/HDiffPatch/compress_parallel.h +59 -0
  81. hdiffpatch/_c_src/HDiffPatch/compress_plugin_demo.h +1519 -0
  82. hdiffpatch/_c_src/HDiffPatch/decompress_plugin_demo.h +1634 -0
  83. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +867 -0
  84. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +79 -0
  85. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +226 -0
  86. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +190 -0
  87. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +357 -0
  88. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.h +87 -0
  89. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +151 -0
  90. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +814 -0
  91. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +241 -0
  92. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_private.h +47 -0
  93. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +114 -0
  94. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +53 -0
  95. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +65 -0
  96. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +340 -0
  97. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +144 -0
  98. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +176 -0
  99. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +84 -0
  100. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +146 -0
  101. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +61 -0
  102. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +152 -0
  103. hdiffpatch/_c_src/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +76 -0
  104. hdiffpatch/_c_src/HDiffPatch/file_for_patch.c +658 -0
  105. hdiffpatch/_c_src/HDiffPatch/file_for_patch.h +298 -0
  106. hdiffpatch/_c_src/HDiffPatch/hdiffz.cpp +2112 -0
  107. hdiffpatch/_c_src/HDiffPatch/hdiffz_import_patch.c +31 -0
  108. hdiffpatch/_c_src/HDiffPatch/hdiffz_import_patch.h +42 -0
  109. hdiffpatch/_c_src/HDiffPatch/hpatch_dir_listener.h +302 -0
  110. hdiffpatch/_c_src/HDiffPatch/hpatchz.c +1683 -0
  111. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +1709 -0
  112. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/diff.h +200 -0
  113. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/diff_for_hpatch_lite.h +33 -0
  114. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +173 -0
  115. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/match_block.cpp +356 -0
  116. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/match_block.h +149 -0
  117. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +383 -0
  118. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +73 -0
  119. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +184 -0
  120. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +88 -0
  121. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/config.h +89 -0
  122. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +319 -0
  123. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.cpp +10 -0
  124. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +97 -0
  125. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.cpp +14 -0
  126. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +108 -0
  127. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +186 -0
  128. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +780 -0
  129. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +575 -0
  130. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +435 -0
  131. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +144 -0
  132. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +167 -0
  133. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +138 -0
  134. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +763 -0
  135. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +97 -0
  136. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +921 -0
  137. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +319 -0
  138. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +72 -0
  139. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +132 -0
  140. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/qsort_parallel.h +125 -0
  141. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +428 -0
  142. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +133 -0
  143. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatch/checksum_plugin.h +52 -0
  144. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatch/patch.c +2384 -0
  145. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatch/patch.h +229 -0
  146. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +213 -0
  147. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +342 -0
  148. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite.c +186 -0
  149. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite.h +48 -0
  150. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite_input_cache.h +31 -0
  151. hdiffpatch/_c_src/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite_types.h +100 -0
  152. hdiffpatch/_c_src/HDiffPatch/libParallel/parallel_channel.cpp +170 -0
  153. hdiffpatch/_c_src/HDiffPatch/libParallel/parallel_channel.h +153 -0
  154. hdiffpatch/_c_src/HDiffPatch/libParallel/parallel_import.cpp +367 -0
  155. hdiffpatch/_c_src/HDiffPatch/libParallel/parallel_import.h +92 -0
  156. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/dict_decompress_plugin.h +153 -0
  157. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/dir_sync_client.cpp +437 -0
  158. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/dir_sync_client.h +88 -0
  159. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/match_in_old.cpp +572 -0
  160. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/match_in_old.h +46 -0
  161. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_client.cpp +610 -0
  162. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_client.h +75 -0
  163. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_client_private.h +49 -0
  164. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_client_type.h +156 -0
  165. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_client_type_private.h +204 -0
  166. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_diff_data.cpp +250 -0
  167. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_diff_data.h +67 -0
  168. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_info_client.cpp +674 -0
  169. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_client/sync_info_client.h +121 -0
  170. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/dict_compress_plugin.h +83 -0
  171. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/dir_sync_make.cpp +131 -0
  172. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/dir_sync_make.h +56 -0
  173. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/hsynz_plugin.h +55 -0
  174. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/match_in_new.cpp +147 -0
  175. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/match_in_new.h +38 -0
  176. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/sync_info_make.cpp +328 -0
  177. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/sync_info_make.h +65 -0
  178. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/sync_make.cpp +478 -0
  179. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/sync_make.h +68 -0
  180. hdiffpatch/_c_src/HDiffPatch/libhsync/sync_make/sync_make_hash_clash.h +111 -0
  181. hdiffpatch/_c_src/HDiffPatch/test/_private_searchBestParams.cpp +301 -0
  182. hdiffpatch/_c_src/HDiffPatch/test/hpatchz_test.cpp +291 -0
  183. hdiffpatch/_c_src/HDiffPatch/test/testHashClash.cpp +538 -0
  184. hdiffpatch/_c_src/HDiffPatch/test/unit_test.cpp +861 -0
  185. hdiffpatch/_c_src/HDiffPatch/vcdiff_wrapper/vcdiff_wrapper.cpp +619 -0
  186. hdiffpatch/_c_src/HDiffPatch/vcdiff_wrapper/vcdiff_wrapper.h +95 -0
  187. hdiffpatch/_c_src/HDiffPatch/vcdiff_wrapper/vcpatch_code_table.h +78 -0
  188. hdiffpatch/_c_src/HDiffPatch/vcdiff_wrapper/vcpatch_wrapper.c +950 -0
  189. hdiffpatch/_c_src/HDiffPatch/vcdiff_wrapper/vcpatch_wrapper.h +72 -0
  190. hdiffpatch/_c_src/bzip2/.git +1 -0
  191. hdiffpatch/_c_src/bzip2/.gitattributes +1 -0
  192. hdiffpatch/_c_src/bzip2/.gitignore +9 -0
  193. hdiffpatch/_c_src/bzip2/CHANGES +356 -0
  194. hdiffpatch/_c_src/bzip2/LICENSE +42 -0
  195. hdiffpatch/_c_src/bzip2/Makefile +223 -0
  196. hdiffpatch/_c_src/bzip2/Makefile-libbz2_so +59 -0
  197. hdiffpatch/_c_src/bzip2/README +196 -0
  198. hdiffpatch/_c_src/bzip2/README.COMPILATION.PROBLEMS +58 -0
  199. hdiffpatch/_c_src/bzip2/README.XML.STUFF +45 -0
  200. hdiffpatch/_c_src/bzip2/blocksort.c +1094 -0
  201. hdiffpatch/_c_src/bzip2/bz-common.xsl +39 -0
  202. hdiffpatch/_c_src/bzip2/bz-fo.xsl +276 -0
  203. hdiffpatch/_c_src/bzip2/bz-html.xsl +23 -0
  204. hdiffpatch/_c_src/bzip2/bzdiff +76 -0
  205. hdiffpatch/_c_src/bzip2/bzdiff.1 +52 -0
  206. hdiffpatch/_c_src/bzip2/bzgrep +85 -0
  207. hdiffpatch/_c_src/bzip2/bzgrep.1 +62 -0
  208. hdiffpatch/_c_src/bzip2/bzip.css +74 -0
  209. hdiffpatch/_c_src/bzip2/bzip2.1 +464 -0
  210. hdiffpatch/_c_src/bzip2/bzip2.c +2046 -0
  211. hdiffpatch/_c_src/bzip2/bzip2recover.c +516 -0
  212. hdiffpatch/_c_src/bzip2/bzlib.c +1572 -0
  213. hdiffpatch/_c_src/bzip2/bzlib.h +282 -0
  214. hdiffpatch/_c_src/bzip2/bzlib_private.h +509 -0
  215. hdiffpatch/_c_src/bzip2/bzmore +61 -0
  216. hdiffpatch/_c_src/bzip2/bzmore.1 +156 -0
  217. hdiffpatch/_c_src/bzip2/compress.c +672 -0
  218. hdiffpatch/_c_src/bzip2/crctable.c +104 -0
  219. hdiffpatch/_c_src/bzip2/decompress.c +652 -0
  220. hdiffpatch/_c_src/bzip2/dlltest.c +175 -0
  221. hdiffpatch/_c_src/bzip2/dlltest.dsp +93 -0
  222. hdiffpatch/_c_src/bzip2/entities.xml +10 -0
  223. hdiffpatch/_c_src/bzip2/format.pl +68 -0
  224. hdiffpatch/_c_src/bzip2/huffman.c +205 -0
  225. hdiffpatch/_c_src/bzip2/libbz2.def +27 -0
  226. hdiffpatch/_c_src/bzip2/libbz2.dsp +130 -0
  227. hdiffpatch/_c_src/bzip2/makefile.msc +63 -0
  228. hdiffpatch/_c_src/bzip2/manual.xml +2979 -0
  229. hdiffpatch/_c_src/bzip2/mk251.c +31 -0
  230. hdiffpatch/_c_src/bzip2/prepare-release.sh +82 -0
  231. hdiffpatch/_c_src/bzip2/randtable.c +84 -0
  232. hdiffpatch/_c_src/bzip2/release-update.sh +90 -0
  233. hdiffpatch/_c_src/bzip2/sample1.bz2 +0 -0
  234. hdiffpatch/_c_src/bzip2/sample1.ref +0 -0
  235. hdiffpatch/_c_src/bzip2/sample2.bz2 +0 -0
  236. hdiffpatch/_c_src/bzip2/sample2.ref +0 -0
  237. hdiffpatch/_c_src/bzip2/sample3.bz2 +0 -0
  238. hdiffpatch/_c_src/bzip2/sample3.ref +30007 -0
  239. hdiffpatch/_c_src/bzip2/spewG.c +54 -0
  240. hdiffpatch/_c_src/bzip2/unzcrash.c +141 -0
  241. hdiffpatch/_c_src/bzip2/words0 +9 -0
  242. hdiffpatch/_c_src/bzip2/words1 +4 -0
  243. hdiffpatch/_c_src/bzip2/words2 +5 -0
  244. hdiffpatch/_c_src/bzip2/words3 +30 -0
  245. hdiffpatch/_c_src/bzip2/xmlproc.sh +114 -0
  246. hdiffpatch/_c_src/foo.c +11 -0
  247. hdiffpatch/_c_src/foo.h +24 -0
  248. hdiffpatch/_c_src/libdeflate/.cirrus.yml +12 -0
  249. hdiffpatch/_c_src/libdeflate/.git +1 -0
  250. hdiffpatch/_c_src/libdeflate/.github/workflows/ci.yml +290 -0
  251. hdiffpatch/_c_src/libdeflate/.gitignore +6 -0
  252. hdiffpatch/_c_src/libdeflate/CMakeLists.txt +319 -0
  253. hdiffpatch/_c_src/libdeflate/COPYING +22 -0
  254. hdiffpatch/_c_src/libdeflate/NEWS.md +515 -0
  255. hdiffpatch/_c_src/libdeflate/README.md +341 -0
  256. hdiffpatch/_c_src/libdeflate/common_defs.h +747 -0
  257. hdiffpatch/_c_src/libdeflate/lib/adler32.c +162 -0
  258. hdiffpatch/_c_src/libdeflate/lib/arm/adler32_impl.h +365 -0
  259. hdiffpatch/_c_src/libdeflate/lib/arm/cpu_features.c +230 -0
  260. hdiffpatch/_c_src/libdeflate/lib/arm/cpu_features.h +216 -0
  261. hdiffpatch/_c_src/libdeflate/lib/arm/crc32_impl.h +596 -0
  262. hdiffpatch/_c_src/libdeflate/lib/arm/crc32_pmull_helpers.h +156 -0
  263. hdiffpatch/_c_src/libdeflate/lib/arm/crc32_pmull_wide.h +226 -0
  264. hdiffpatch/_c_src/libdeflate/lib/arm/matchfinder_impl.h +78 -0
  265. hdiffpatch/_c_src/libdeflate/lib/bt_matchfinder.h +342 -0
  266. hdiffpatch/_c_src/libdeflate/lib/cpu_features_common.h +93 -0
  267. hdiffpatch/_c_src/libdeflate/lib/crc32.c +262 -0
  268. hdiffpatch/_c_src/libdeflate/lib/crc32_multipliers.h +375 -0
  269. hdiffpatch/_c_src/libdeflate/lib/crc32_tables.h +587 -0
  270. hdiffpatch/_c_src/libdeflate/lib/decompress_template.h +849 -0
  271. hdiffpatch/_c_src/libdeflate/lib/deflate_compress.c +4394 -0
  272. hdiffpatch/_c_src/libdeflate/lib/deflate_compress.h +15 -0
  273. hdiffpatch/_c_src/libdeflate/lib/deflate_constants.h +56 -0
  274. hdiffpatch/_c_src/libdeflate/lib/deflate_decompress.c +1249 -0
  275. hdiffpatch/_c_src/libdeflate/lib/gzip_compress.c +112 -0
  276. hdiffpatch/_c_src/libdeflate/lib/gzip_constants.h +45 -0
  277. hdiffpatch/_c_src/libdeflate/lib/gzip_decompress.c +184 -0
  278. hdiffpatch/_c_src/libdeflate/lib/gzip_overhead.h +20 -0
  279. hdiffpatch/_c_src/libdeflate/lib/hc_matchfinder.h +401 -0
  280. hdiffpatch/_c_src/libdeflate/lib/ht_matchfinder.h +240 -0
  281. hdiffpatch/_c_src/libdeflate/lib/lib_common.h +108 -0
  282. hdiffpatch/_c_src/libdeflate/lib/matchfinder_common.h +224 -0
  283. hdiffpatch/_c_src/libdeflate/lib/riscv/matchfinder_impl.h +97 -0
  284. hdiffpatch/_c_src/libdeflate/lib/utils.c +141 -0
  285. hdiffpatch/_c_src/libdeflate/lib/x86/adler32_impl.h +136 -0
  286. hdiffpatch/_c_src/libdeflate/lib/x86/adler32_template.h +518 -0
  287. hdiffpatch/_c_src/libdeflate/lib/x86/cpu_features.c +212 -0
  288. hdiffpatch/_c_src/libdeflate/lib/x86/cpu_features.h +179 -0
  289. hdiffpatch/_c_src/libdeflate/lib/x86/crc32_impl.h +160 -0
  290. hdiffpatch/_c_src/libdeflate/lib/x86/crc32_pclmul_template.h +467 -0
  291. hdiffpatch/_c_src/libdeflate/lib/x86/decompress_impl.h +57 -0
  292. hdiffpatch/_c_src/libdeflate/lib/x86/matchfinder_impl.h +122 -0
  293. hdiffpatch/_c_src/libdeflate/lib/zlib_compress.c +82 -0
  294. hdiffpatch/_c_src/libdeflate/lib/zlib_constants.h +21 -0
  295. hdiffpatch/_c_src/libdeflate/lib/zlib_decompress.c +104 -0
  296. hdiffpatch/_c_src/libdeflate/libdeflate-config.cmake.in +3 -0
  297. hdiffpatch/_c_src/libdeflate/libdeflate.h +534 -0
  298. hdiffpatch/_c_src/libdeflate/libdeflate.pc.in +18 -0
  299. hdiffpatch/_c_src/libdeflate/pgzip/Makefile +74 -0
  300. hdiffpatch/_c_src/libdeflate/pgzip/vc/pgzip.sln +37 -0
  301. hdiffpatch/_c_src/libdeflate/pgzip/vc/pgzip.vcxproj +215 -0
  302. hdiffpatch/_c_src/libdeflate/pgzip/vc/pgzip.vcxproj.filters +46 -0
  303. hdiffpatch/_c_src/libdeflate/pgzip/xcode/pgzip.xcodeproj/project.pbxproj +326 -0
  304. hdiffpatch/_c_src/libdeflate/pgzip/xcode/pgzip.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  305. hdiffpatch/_c_src/libdeflate/pgzip/xcode/pgzip.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  306. hdiffpatch/_c_src/libdeflate/pgzip/xcode/pgzip.xcodeproj/xcshareddata/xcschemes/pgzip.xcscheme +78 -0
  307. hdiffpatch/_c_src/libdeflate/programs/CMakeLists.txt +105 -0
  308. hdiffpatch/_c_src/libdeflate/programs/benchmark.c +696 -0
  309. hdiffpatch/_c_src/libdeflate/programs/checksum.c +218 -0
  310. hdiffpatch/_c_src/libdeflate/programs/config.h.in +19 -0
  311. hdiffpatch/_c_src/libdeflate/programs/gzip.c +688 -0
  312. hdiffpatch/_c_src/libdeflate/programs/gzip_compress_by_stream_mt.cpp +336 -0
  313. hdiffpatch/_c_src/libdeflate/programs/gzip_compress_by_stream_mt.h +43 -0
  314. hdiffpatch/_c_src/libdeflate/programs/gzip_decompress_by_stream_mt.cpp +483 -0
  315. hdiffpatch/_c_src/libdeflate/programs/gzip_decompress_by_stream_mt.h +53 -0
  316. hdiffpatch/_c_src/libdeflate/programs/pgzip.c +523 -0
  317. hdiffpatch/_c_src/libdeflate/programs/prog_util.c +541 -0
  318. hdiffpatch/_c_src/libdeflate/programs/prog_util.h +226 -0
  319. hdiffpatch/_c_src/libdeflate/programs/test_checksums.c +200 -0
  320. hdiffpatch/_c_src/libdeflate/programs/test_custom_malloc.c +155 -0
  321. hdiffpatch/_c_src/libdeflate/programs/test_incomplete_codes.c +385 -0
  322. hdiffpatch/_c_src/libdeflate/programs/test_invalid_streams.c +130 -0
  323. hdiffpatch/_c_src/libdeflate/programs/test_litrunlen_overflow.c +72 -0
  324. hdiffpatch/_c_src/libdeflate/programs/test_overread.c +95 -0
  325. hdiffpatch/_c_src/libdeflate/programs/test_slow_decompression.c +472 -0
  326. hdiffpatch/_c_src/libdeflate/programs/test_trailing_bytes.c +151 -0
  327. hdiffpatch/_c_src/libdeflate/programs/test_util.c +237 -0
  328. hdiffpatch/_c_src/libdeflate/programs/test_util.h +61 -0
  329. hdiffpatch/_c_src/libdeflate/programs/tgetopt.c +118 -0
  330. hdiffpatch/_c_src/libdeflate/scripts/android_build.sh +118 -0
  331. hdiffpatch/_c_src/libdeflate/scripts/android_tests.sh +69 -0
  332. hdiffpatch/_c_src/libdeflate/scripts/benchmark.sh +10 -0
  333. hdiffpatch/_c_src/libdeflate/scripts/checksum.sh +10 -0
  334. hdiffpatch/_c_src/libdeflate/scripts/checksum_benchmarks.sh +253 -0
  335. hdiffpatch/_c_src/libdeflate/scripts/cmake-helper.sh +17 -0
  336. hdiffpatch/_c_src/libdeflate/scripts/deflate_benchmarks.sh +119 -0
  337. hdiffpatch/_c_src/libdeflate/scripts/exec_tests.sh +38 -0
  338. hdiffpatch/_c_src/libdeflate/scripts/gen-crc32-consts.py +158 -0
  339. hdiffpatch/_c_src/libdeflate/scripts/gen-release-archives.sh +37 -0
  340. hdiffpatch/_c_src/libdeflate/scripts/gen_bitreverse_tab.py +19 -0
  341. hdiffpatch/_c_src/libdeflate/scripts/gen_default_litlen_costs.py +44 -0
  342. hdiffpatch/_c_src/libdeflate/scripts/gen_offset_slot_map.py +29 -0
  343. hdiffpatch/_c_src/libdeflate/scripts/gzip_tests.sh +523 -0
  344. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/.gitignore +1 -0
  345. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/deflate_compress/corpus/0 +0 -0
  346. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/deflate_compress/fuzz.c +95 -0
  347. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/deflate_decompress/corpus/0 +3 -0
  348. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/deflate_decompress/fuzz.c +62 -0
  349. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/fuzz.sh +108 -0
  350. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/gzip_decompress/corpus/0 +0 -0
  351. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/gzip_decompress/fuzz.c +19 -0
  352. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/zlib_decompress/corpus/0 +3 -0
  353. hdiffpatch/_c_src/libdeflate/scripts/libFuzzer/zlib_decompress/fuzz.c +19 -0
  354. hdiffpatch/_c_src/libdeflate/scripts/run_tests.sh +416 -0
  355. hdiffpatch/_c_src/libdeflate/scripts/toolchain-i686-w64-mingw32.cmake +8 -0
  356. hdiffpatch/_c_src/libdeflate/scripts/toolchain-x86_64-w64-mingw32.cmake +8 -0
  357. hdiffpatch/_c_src/libmd5/.git +1 -0
  358. hdiffpatch/_c_src/libmd5/md5.c +381 -0
  359. hdiffpatch/_c_src/libmd5/md5.h +91 -0
  360. hdiffpatch/_c_src/libmd5/md5main.c +139 -0
  361. hdiffpatch/_c_src/lzma/.git +1 -0
  362. hdiffpatch/_c_src/lzma/Asm/arm/7zCrcOpt.asm +100 -0
  363. hdiffpatch/_c_src/lzma/Asm/arm64/7zAsm.S +181 -0
  364. hdiffpatch/_c_src/lzma/Asm/arm64/LzmaDecOpt.S +1487 -0
  365. hdiffpatch/_c_src/lzma/Asm/x86/7zAsm.asm +341 -0
  366. hdiffpatch/_c_src/lzma/Asm/x86/7zCrcOpt.asm +258 -0
  367. hdiffpatch/_c_src/lzma/Asm/x86/AesOpt.asm +742 -0
  368. hdiffpatch/_c_src/lzma/Asm/x86/LzFindOpt.asm +540 -0
  369. hdiffpatch/_c_src/lzma/Asm/x86/LzmaDecOpt.asm +1339 -0
  370. hdiffpatch/_c_src/lzma/Asm/x86/Sha256Opt.asm +275 -0
  371. hdiffpatch/_c_src/lzma/Asm/x86/XzCrc64Opt.asm +523 -0
  372. hdiffpatch/_c_src/lzma/C/7z.h +204 -0
  373. hdiffpatch/_c_src/lzma/C/7zAlloc.c +89 -0
  374. hdiffpatch/_c_src/lzma/C/7zAlloc.h +19 -0
  375. hdiffpatch/_c_src/lzma/C/7zArcIn.c +1786 -0
  376. hdiffpatch/_c_src/lzma/C/7zBuf.c +36 -0
  377. hdiffpatch/_c_src/lzma/C/7zBuf.h +35 -0
  378. hdiffpatch/_c_src/lzma/C/7zBuf2.c +52 -0
  379. hdiffpatch/_c_src/lzma/C/7zCrc.c +464 -0
  380. hdiffpatch/_c_src/lzma/C/7zCrc.h +28 -0
  381. hdiffpatch/_c_src/lzma/C/7zCrcOpt.c +199 -0
  382. hdiffpatch/_c_src/lzma/C/7zDec.c +673 -0
  383. hdiffpatch/_c_src/lzma/C/7zFile.c +443 -0
  384. hdiffpatch/_c_src/lzma/C/7zFile.h +92 -0
  385. hdiffpatch/_c_src/lzma/C/7zStream.c +199 -0
  386. hdiffpatch/_c_src/lzma/C/7zTypes.h +597 -0
  387. hdiffpatch/_c_src/lzma/C/7zVersion.h +27 -0
  388. hdiffpatch/_c_src/lzma/C/7zVersion.rc +55 -0
  389. hdiffpatch/_c_src/lzma/C/7zWindows.h +101 -0
  390. hdiffpatch/_c_src/lzma/C/7zip_gcc_c.mak +360 -0
  391. hdiffpatch/_c_src/lzma/C/Aes.c +429 -0
  392. hdiffpatch/_c_src/lzma/C/Aes.h +60 -0
  393. hdiffpatch/_c_src/lzma/C/AesOpt.c +1002 -0
  394. hdiffpatch/_c_src/lzma/C/Alloc.c +605 -0
  395. hdiffpatch/_c_src/lzma/C/Alloc.h +76 -0
  396. hdiffpatch/_c_src/lzma/C/Asm_c.mak +12 -0
  397. hdiffpatch/_c_src/lzma/C/Bcj2.c +290 -0
  398. hdiffpatch/_c_src/lzma/C/Bcj2.h +332 -0
  399. hdiffpatch/_c_src/lzma/C/Bcj2Enc.c +506 -0
  400. hdiffpatch/_c_src/lzma/C/Bra.c +709 -0
  401. hdiffpatch/_c_src/lzma/C/Bra.h +105 -0
  402. hdiffpatch/_c_src/lzma/C/Bra86.c +187 -0
  403. hdiffpatch/_c_src/lzma/C/BraIA64.c +14 -0
  404. hdiffpatch/_c_src/lzma/C/Compiler.h +236 -0
  405. hdiffpatch/_c_src/lzma/C/CpuArch.c +970 -0
  406. hdiffpatch/_c_src/lzma/C/CpuArch.h +678 -0
  407. hdiffpatch/_c_src/lzma/C/Delta.c +169 -0
  408. hdiffpatch/_c_src/lzma/C/Delta.h +19 -0
  409. hdiffpatch/_c_src/lzma/C/DllSecur.c +99 -0
  410. hdiffpatch/_c_src/lzma/C/DllSecur.h +20 -0
  411. hdiffpatch/_c_src/lzma/C/LzFind.c +1746 -0
  412. hdiffpatch/_c_src/lzma/C/LzFind.h +160 -0
  413. hdiffpatch/_c_src/lzma/C/LzFindMt.c +1414 -0
  414. hdiffpatch/_c_src/lzma/C/LzFindMt.h +112 -0
  415. hdiffpatch/_c_src/lzma/C/LzFindOpt.c +578 -0
  416. hdiffpatch/_c_src/lzma/C/LzHash.h +34 -0
  417. hdiffpatch/_c_src/lzma/C/Lzma2Dec.c +493 -0
  418. hdiffpatch/_c_src/lzma/C/Lzma2Dec.h +121 -0
  419. hdiffpatch/_c_src/lzma/C/Lzma2DecMt.c +1095 -0
  420. hdiffpatch/_c_src/lzma/C/Lzma2DecMt.h +81 -0
  421. hdiffpatch/_c_src/lzma/C/Lzma2Enc.c +805 -0
  422. hdiffpatch/_c_src/lzma/C/Lzma2Enc.h +57 -0
  423. hdiffpatch/_c_src/lzma/C/Lzma86.h +111 -0
  424. hdiffpatch/_c_src/lzma/C/Lzma86Dec.c +53 -0
  425. hdiffpatch/_c_src/lzma/C/Lzma86Enc.c +103 -0
  426. hdiffpatch/_c_src/lzma/C/LzmaDec.c +1363 -0
  427. hdiffpatch/_c_src/lzma/C/LzmaDec.h +237 -0
  428. hdiffpatch/_c_src/lzma/C/LzmaEnc.c +3144 -0
  429. hdiffpatch/_c_src/lzma/C/LzmaEnc.h +83 -0
  430. hdiffpatch/_c_src/lzma/C/LzmaLib.c +42 -0
  431. hdiffpatch/_c_src/lzma/C/LzmaLib.h +138 -0
  432. hdiffpatch/_c_src/lzma/C/MtCoder.c +571 -0
  433. hdiffpatch/_c_src/lzma/C/MtCoder.h +141 -0
  434. hdiffpatch/_c_src/lzma/C/MtDec.c +1124 -0
  435. hdiffpatch/_c_src/lzma/C/MtDec.h +202 -0
  436. hdiffpatch/_c_src/lzma/C/Ppmd.h +169 -0
  437. hdiffpatch/_c_src/lzma/C/Ppmd7.c +1131 -0
  438. hdiffpatch/_c_src/lzma/C/Ppmd7.h +181 -0
  439. hdiffpatch/_c_src/lzma/C/Ppmd7Dec.c +312 -0
  440. hdiffpatch/_c_src/lzma/C/Ppmd7Enc.c +337 -0
  441. hdiffpatch/_c_src/lzma/C/Precomp.h +127 -0
  442. hdiffpatch/_c_src/lzma/C/RotateDefs.h +50 -0
  443. hdiffpatch/_c_src/lzma/C/Sha256.c +492 -0
  444. hdiffpatch/_c_src/lzma/C/Sha256.h +86 -0
  445. hdiffpatch/_c_src/lzma/C/Sha256Opt.c +451 -0
  446. hdiffpatch/_c_src/lzma/C/Sort.c +141 -0
  447. hdiffpatch/_c_src/lzma/C/Sort.h +18 -0
  448. hdiffpatch/_c_src/lzma/C/SwapBytes.c +835 -0
  449. hdiffpatch/_c_src/lzma/C/SwapBytes.h +17 -0
  450. hdiffpatch/_c_src/lzma/C/Threads.c +581 -0
  451. hdiffpatch/_c_src/lzma/C/Threads.h +250 -0
  452. hdiffpatch/_c_src/lzma/C/Util/7z/7z.dsp +249 -0
  453. hdiffpatch/_c_src/lzma/C/Util/7z/7z.dsw +29 -0
  454. hdiffpatch/_c_src/lzma/C/Util/7z/7zMain.c +889 -0
  455. hdiffpatch/_c_src/lzma/C/Util/7z/Precomp.c +4 -0
  456. hdiffpatch/_c_src/lzma/C/Util/7z/Precomp.h +13 -0
  457. hdiffpatch/_c_src/lzma/C/Util/7z/makefile +44 -0
  458. hdiffpatch/_c_src/lzma/C/Util/7z/makefile.gcc +32 -0
  459. hdiffpatch/_c_src/lzma/C/Util/Lzma/LzmaUtil.c +313 -0
  460. hdiffpatch/_c_src/lzma/C/Util/Lzma/LzmaUtil.dsp +188 -0
  461. hdiffpatch/_c_src/lzma/C/Util/Lzma/LzmaUtil.dsw +29 -0
  462. hdiffpatch/_c_src/lzma/C/Util/Lzma/Precomp.h +13 -0
  463. hdiffpatch/_c_src/lzma/C/Util/Lzma/makefile +30 -0
  464. hdiffpatch/_c_src/lzma/C/Util/Lzma/makefile.gcc +21 -0
  465. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/LzmaLib.def +4 -0
  466. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/LzmaLib.dsp +202 -0
  467. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/LzmaLib.dsw +29 -0
  468. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/LzmaLibExports.c +15 -0
  469. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/Precomp.c +4 -0
  470. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/Precomp.h +13 -0
  471. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/makefile +59 -0
  472. hdiffpatch/_c_src/lzma/C/Util/LzmaLib/resource.rc +3 -0
  473. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/Precomp.c +4 -0
  474. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/Precomp.h +13 -0
  475. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/SfxSetup.c +657 -0
  476. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/SfxSetup.dsp +231 -0
  477. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/SfxSetup.dsw +29 -0
  478. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/makefile +44 -0
  479. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/makefile_con +40 -0
  480. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/resource.rc +5 -0
  481. hdiffpatch/_c_src/lzma/C/Util/SfxSetup/setup.ico +0 -0
  482. hdiffpatch/_c_src/lzma/C/Xz.c +92 -0
  483. hdiffpatch/_c_src/lzma/C/Xz.h +536 -0
  484. hdiffpatch/_c_src/lzma/C/XzCrc64.c +140 -0
  485. hdiffpatch/_c_src/lzma/C/XzCrc64.h +26 -0
  486. hdiffpatch/_c_src/lzma/C/XzCrc64Opt.c +261 -0
  487. hdiffpatch/_c_src/lzma/C/XzDec.c +2877 -0
  488. hdiffpatch/_c_src/lzma/C/XzEnc.c +1378 -0
  489. hdiffpatch/_c_src/lzma/C/XzEnc.h +63 -0
  490. hdiffpatch/_c_src/lzma/C/XzIn.c +340 -0
  491. hdiffpatch/_c_src/lzma/C/var_clang.mak +11 -0
  492. hdiffpatch/_c_src/lzma/C/var_clang_arm64.mak +12 -0
  493. hdiffpatch/_c_src/lzma/C/var_clang_x64.mak +11 -0
  494. hdiffpatch/_c_src/lzma/C/var_clang_x86.mak +11 -0
  495. hdiffpatch/_c_src/lzma/C/var_gcc.mak +12 -0
  496. hdiffpatch/_c_src/lzma/C/var_gcc_arm64.mak +12 -0
  497. hdiffpatch/_c_src/lzma/C/var_gcc_x64.mak +10 -0
  498. hdiffpatch/_c_src/lzma/C/var_gcc_x86.mak +10 -0
  499. hdiffpatch/_c_src/lzma/C/var_mac_arm64.mak +11 -0
  500. hdiffpatch/_c_src/lzma/C/var_mac_x64.mak +11 -0
  501. hdiffpatch/_c_src/lzma/C/warn_clang.mak +1 -0
  502. hdiffpatch/_c_src/lzma/C/warn_clang_mac.mak +1 -0
  503. hdiffpatch/_c_src/lzma/C/warn_gcc.mak +51 -0
  504. hdiffpatch/_c_src/lzma/CPP/7zip/7zip.mak +240 -0
  505. hdiffpatch/_c_src/lzma/CPP/7zip/7zip_gcc.mak +1368 -0
  506. hdiffpatch/_c_src/lzma/CPP/7zip/Aes.mak +10 -0
  507. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zCompressionMode.cpp +3 -0
  508. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +90 -0
  509. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +599 -0
  510. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zDecode.h +73 -0
  511. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +721 -0
  512. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zEncode.h +95 -0
  513. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +444 -0
  514. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +264 -0
  515. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +101 -0
  516. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +795 -0
  517. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zHandler.h +178 -0
  518. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +1158 -0
  519. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +19 -0
  520. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zHeader.h +156 -0
  521. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zIn.cpp +1764 -0
  522. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zIn.h +454 -0
  523. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zItem.h +207 -0
  524. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zOut.cpp +1026 -0
  525. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zOut.h +346 -0
  526. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +182 -0
  527. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zProperties.h +26 -0
  528. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +27 -0
  529. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +31 -0
  530. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +49 -0
  531. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +3088 -0
  532. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/7zUpdate.h +167 -0
  533. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/StdAfx.cpp +3 -0
  534. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/7z/StdAfx.h +11 -0
  535. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Archive.def +14 -0
  536. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Archive2.def +21 -0
  537. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/ArchiveExports.cpp +158 -0
  538. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +1144 -0
  539. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +447 -0
  540. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +17 -0
  541. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +23 -0
  542. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +311 -0
  543. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/HandlerOut.h +154 -0
  544. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +57 -0
  545. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +64 -0
  546. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +135 -0
  547. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +30 -0
  548. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +193 -0
  549. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/MultiStream.h +86 -0
  550. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +18 -0
  551. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +35 -0
  552. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/ParseProperties.cpp +3 -0
  553. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/ParseProperties.h +6 -0
  554. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Common/StdAfx.h +11 -0
  555. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/DllExports2.cpp +175 -0
  556. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/IArchive.h +754 -0
  557. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/Icons/7z.ico +0 -0
  558. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/LzmaHandler.cpp +608 -0
  559. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/SplitHandler.cpp +353 -0
  560. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/StdAfx.h +11 -0
  561. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/XzHandler.cpp +1440 -0
  562. hdiffpatch/_c_src/lzma/CPP/7zip/Archive/XzHandler.h +11 -0
  563. hdiffpatch/_c_src/lzma/CPP/7zip/Asm.mak +12 -0
  564. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +2090 -0
  565. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsw +29 -0
  566. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.cpp +3 -0
  567. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +11 -0
  568. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/makefile +168 -0
  569. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/makefile.gcc +279 -0
  570. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Alone7z/resource.rc +7 -0
  571. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.cpp +3 -0
  572. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +11 -0
  573. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +98 -0
  574. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zExtractR/resource.rc +5 -0
  575. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.cpp +3 -0
  576. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +11 -0
  577. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zR/makefile +121 -0
  578. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/Format7zR/resource.rc +5 -0
  579. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +817 -0
  580. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +540 -0
  581. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsw +29 -0
  582. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.cpp +3 -0
  583. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +11 -0
  584. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/makefile +68 -0
  585. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +131 -0
  586. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaCon/resource.rc +3 -0
  587. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/LzmaSpec/LzmaSpec.cpp +715 -0
  588. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/7z.ico +0 -0
  589. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +1017 -0
  590. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsw +29 -0
  591. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +521 -0
  592. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.cpp +3 -0
  593. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +11 -0
  594. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/makefile +137 -0
  595. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/makefile.gcc +215 -0
  596. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +9 -0
  597. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +246 -0
  598. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +83 -0
  599. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +135 -0
  600. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +11 -0
  601. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +872 -0
  602. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsw +29 -0
  603. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +371 -0
  604. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.cpp +3 -0
  605. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +6 -0
  606. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/makefile +121 -0
  607. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/resource.h +6 -0
  608. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/resource.rc +16 -0
  609. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXSetup/setup.ico +0 -0
  610. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/7z.ico +0 -0
  611. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +1074 -0
  612. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsw +29 -0
  613. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +268 -0
  614. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.cpp +3 -0
  615. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +6 -0
  616. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/makefile +159 -0
  617. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/resource.h +1 -0
  618. hdiffpatch/_c_src/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +55 -0
  619. hdiffpatch/_c_src/lzma/CPP/7zip/Common/CWrappers.cpp +358 -0
  620. hdiffpatch/_c_src/lzma/CPP/7zip/Common/CWrappers.h +182 -0
  621. hdiffpatch/_c_src/lzma/CPP/7zip/Common/CreateCoder.cpp +548 -0
  622. hdiffpatch/_c_src/lzma/CPP/7zip/Common/CreateCoder.h +200 -0
  623. hdiffpatch/_c_src/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +46 -0
  624. hdiffpatch/_c_src/lzma/CPP/7zip/Common/FilePathAutoRename.h +10 -0
  625. hdiffpatch/_c_src/lzma/CPP/7zip/Common/FileStreams.cpp +923 -0
  626. hdiffpatch/_c_src/lzma/CPP/7zip/Common/FileStreams.h +205 -0
  627. hdiffpatch/_c_src/lzma/CPP/7zip/Common/FilterCoder.cpp +577 -0
  628. hdiffpatch/_c_src/lzma/CPP/7zip/Common/FilterCoder.h +201 -0
  629. hdiffpatch/_c_src/lzma/CPP/7zip/Common/InBuffer.cpp +182 -0
  630. hdiffpatch/_c_src/lzma/CPP/7zip/Common/InBuffer.h +111 -0
  631. hdiffpatch/_c_src/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +237 -0
  632. hdiffpatch/_c_src/lzma/CPP/7zip/Common/InOutTempBuffer.h +45 -0
  633. hdiffpatch/_c_src/lzma/CPP/7zip/Common/LimitedStreams.cpp +393 -0
  634. hdiffpatch/_c_src/lzma/CPP/7zip/Common/LimitedStreams.h +221 -0
  635. hdiffpatch/_c_src/lzma/CPP/7zip/Common/LockedStream.cpp +3 -0
  636. hdiffpatch/_c_src/lzma/CPP/7zip/Common/LockedStream.h +6 -0
  637. hdiffpatch/_c_src/lzma/CPP/7zip/Common/MethodId.cpp +3 -0
  638. hdiffpatch/_c_src/lzma/CPP/7zip/Common/MethodId.h +10 -0
  639. hdiffpatch/_c_src/lzma/CPP/7zip/Common/MethodProps.cpp +739 -0
  640. hdiffpatch/_c_src/lzma/CPP/7zip/Common/MethodProps.h +345 -0
  641. hdiffpatch/_c_src/lzma/CPP/7zip/Common/MultiOutStream.cpp +855 -0
  642. hdiffpatch/_c_src/lzma/CPP/7zip/Common/MultiOutStream.h +160 -0
  643. hdiffpatch/_c_src/lzma/CPP/7zip/Common/OffsetStream.cpp +37 -0
  644. hdiffpatch/_c_src/lzma/CPP/7zip/Common/OffsetStream.h +22 -0
  645. hdiffpatch/_c_src/lzma/CPP/7zip/Common/OutBuffer.cpp +111 -0
  646. hdiffpatch/_c_src/lzma/CPP/7zip/Common/OutBuffer.h +108 -0
  647. hdiffpatch/_c_src/lzma/CPP/7zip/Common/ProgressUtils.cpp +51 -0
  648. hdiffpatch/_c_src/lzma/CPP/7zip/Common/ProgressUtils.h +33 -0
  649. hdiffpatch/_c_src/lzma/CPP/7zip/Common/PropId.cpp +117 -0
  650. hdiffpatch/_c_src/lzma/CPP/7zip/Common/RegisterArc.h +80 -0
  651. hdiffpatch/_c_src/lzma/CPP/7zip/Common/RegisterCodec.h +106 -0
  652. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StdAfx.h +11 -0
  653. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StreamBinder.cpp +151 -0
  654. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StreamBinder.h +78 -0
  655. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StreamObjects.cpp +290 -0
  656. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StreamObjects.h +146 -0
  657. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StreamUtils.cpp +101 -0
  658. hdiffpatch/_c_src/lzma/CPP/7zip/Common/StreamUtils.h +31 -0
  659. hdiffpatch/_c_src/lzma/CPP/7zip/Common/UniqBlocks.cpp +57 -0
  660. hdiffpatch/_c_src/lzma/CPP/7zip/Common/UniqBlocks.h +41 -0
  661. hdiffpatch/_c_src/lzma/CPP/7zip/Common/VirtThread.cpp +47 -0
  662. hdiffpatch/_c_src/lzma/CPP/7zip/Common/VirtThread.h +24 -0
  663. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +867 -0
  664. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Bcj2Coder.h +127 -0
  665. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Bcj2Register.cpp +24 -0
  666. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/BcjCoder.cpp +24 -0
  667. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/BcjCoder.h +37 -0
  668. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/BcjRegister.cpp +17 -0
  669. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/BranchMisc.cpp +106 -0
  670. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/BranchMisc.h +59 -0
  671. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/BranchRegister.cpp +58 -0
  672. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/ByteSwap.cpp +91 -0
  673. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/CodecExports.cpp +378 -0
  674. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/CopyCoder.cpp +153 -0
  675. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/CopyCoder.h +34 -0
  676. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/CopyRegister.cpp +15 -0
  677. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/DeltaFilter.cpp +126 -0
  678. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +267 -0
  679. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Lzma2Decoder.h +87 -0
  680. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +126 -0
  681. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Lzma2Encoder.h +30 -0
  682. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/Lzma2Register.cpp +22 -0
  683. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +350 -0
  684. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/LzmaDecoder.h +113 -0
  685. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +356 -0
  686. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/LzmaEncoder.h +45 -0
  687. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/LzmaRegister.cpp +22 -0
  688. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +219 -0
  689. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/PpmdDecoder.h +87 -0
  690. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +193 -0
  691. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/PpmdEncoder.h +49 -0
  692. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/PpmdRegister.cpp +22 -0
  693. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/StdAfx.h +11 -0
  694. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/XzDecoder.cpp +151 -0
  695. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/XzDecoder.h +86 -0
  696. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/XzEncoder.cpp +243 -0
  697. hdiffpatch/_c_src/lzma/CPP/7zip/Compress/XzEncoder.h +35 -0
  698. hdiffpatch/_c_src/lzma/CPP/7zip/Crc.mak +8 -0
  699. hdiffpatch/_c_src/lzma/CPP/7zip/Crc64.mak +8 -0
  700. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/7zAes.cpp +315 -0
  701. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/7zAes.h +130 -0
  702. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +17 -0
  703. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/MyAes.cpp +258 -0
  704. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/MyAes.h +122 -0
  705. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/MyAesReg.cpp +29 -0
  706. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/RandGen.cpp +241 -0
  707. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/RandGen.h +41 -0
  708. hdiffpatch/_c_src/lzma/CPP/7zip/Crypto/StdAfx.h +11 -0
  709. hdiffpatch/_c_src/lzma/CPP/7zip/GuiCommon.rc +119 -0
  710. hdiffpatch/_c_src/lzma/CPP/7zip/Guid.txt +243 -0
  711. hdiffpatch/_c_src/lzma/CPP/7zip/ICoder.h +477 -0
  712. hdiffpatch/_c_src/lzma/CPP/7zip/IDecl.h +76 -0
  713. hdiffpatch/_c_src/lzma/CPP/7zip/IPassword.h +54 -0
  714. hdiffpatch/_c_src/lzma/CPP/7zip/IProgress.h +20 -0
  715. hdiffpatch/_c_src/lzma/CPP/7zip/IStream.h +210 -0
  716. hdiffpatch/_c_src/lzma/CPP/7zip/LzFindOpt.mak +7 -0
  717. hdiffpatch/_c_src/lzma/CPP/7zip/LzmaDec.mak +7 -0
  718. hdiffpatch/_c_src/lzma/CPP/7zip/LzmaDec_gcc.mak +14 -0
  719. hdiffpatch/_c_src/lzma/CPP/7zip/MyVersion.h +2 -0
  720. hdiffpatch/_c_src/lzma/CPP/7zip/MyVersionInfo.rc +2 -0
  721. hdiffpatch/_c_src/lzma/CPP/7zip/PropID.h +178 -0
  722. hdiffpatch/_c_src/lzma/CPP/7zip/Sha256.mak +13 -0
  723. hdiffpatch/_c_src/lzma/CPP/7zip/SubBuild.mak +3 -0
  724. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +1145 -0
  725. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +331 -0
  726. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/Client7z.dsw +29 -0
  727. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/StdAfx.cpp +3 -0
  728. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/StdAfx.h +11 -0
  729. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/makefile +29 -0
  730. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/makefile.gcc +72 -0
  731. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Client7z/resource.rc +3 -0
  732. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +1769 -0
  733. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +170 -0
  734. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +2747 -0
  735. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +584 -0
  736. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +176 -0
  737. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveName.h +16 -0
  738. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +398 -0
  739. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +182 -0
  740. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Bench.cpp +4971 -0
  741. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Bench.h +121 -0
  742. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/DefaultName.cpp +37 -0
  743. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/DefaultName.h +11 -0
  744. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/DirItem.h +407 -0
  745. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +1654 -0
  746. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/EnumDirItems.h +38 -0
  747. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ExitCode.h +27 -0
  748. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Extract.cpp +575 -0
  749. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Extract.h +107 -0
  750. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ExtractMode.h +44 -0
  751. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +296 -0
  752. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +31 -0
  753. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/HashCalc.cpp +2120 -0
  754. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/HashCalc.h +329 -0
  755. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +112 -0
  756. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +1337 -0
  757. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/LoadCodecs.h +482 -0
  758. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +3702 -0
  759. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/OpenArchive.h +469 -0
  760. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +745 -0
  761. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/PropIDUtils.h +18 -0
  762. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Property.h +14 -0
  763. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/SetProperties.cpp +88 -0
  764. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/SetProperties.h +10 -0
  765. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/SortUtils.cpp +25 -0
  766. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/SortUtils.h +10 -0
  767. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/StdAfx.h +11 -0
  768. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/TempFiles.cpp +20 -0
  769. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/TempFiles.h +19 -0
  770. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Update.cpp +1931 -0
  771. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/Update.h +219 -0
  772. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdateAction.cpp +64 -0
  773. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdateAction.h +66 -0
  774. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +1029 -0
  775. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdateCallback.h +197 -0
  776. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +302 -0
  777. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdatePair.h +27 -0
  778. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +74 -0
  779. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/UpdateProduce.h +60 -0
  780. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/WorkDir.cpp +84 -0
  781. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/WorkDir.h +30 -0
  782. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Common/ZipRegistry.h +212 -0
  783. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/BenchCon.cpp +41 -0
  784. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/BenchCon.h +14 -0
  785. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/Console.mak +46 -0
  786. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/Console.manifest +16 -0
  787. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +98 -0
  788. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/ConsoleClose.h +39 -0
  789. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +946 -0
  790. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +211 -0
  791. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/HashCon.cpp +426 -0
  792. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/HashCon.h +58 -0
  793. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/List.cpp +1417 -0
  794. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/List.h +42 -0
  795. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/Main.cpp +1632 -0
  796. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/MainAr.cpp +235 -0
  797. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +115 -0
  798. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +73 -0
  799. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +186 -0
  800. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/PercentPrinter.h +66 -0
  801. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/StdAfx.cpp +3 -0
  802. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/StdAfx.h +11 -0
  803. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +998 -0
  804. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +148 -0
  805. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +118 -0
  806. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/UserInputUtils.h +27 -0
  807. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/makefile +68 -0
  808. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/makefile.gcc +187 -0
  809. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Console/resource.rc +7 -0
  810. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +43 -0
  811. hdiffpatch/_c_src/lzma/CPP/7zip/UI/Explorer/MyMessages.h +16 -0
  812. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +1132 -0
  813. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +32 -0
  814. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/BrowseDialogRes.h +9 -0
  815. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +64 -0
  816. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +28 -0
  817. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ComboDialogRes.h +4 -0
  818. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/DialogSize.h +16 -0
  819. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +1272 -0
  820. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +347 -0
  821. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/FormatUtils.cpp +28 -0
  822. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +14 -0
  823. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/LangUtils.h +48 -0
  824. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/MemDialog.cpp +218 -0
  825. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/MemDialog.h +48 -0
  826. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/MemDialogRes.h +13 -0
  827. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +119 -0
  828. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +288 -0
  829. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +89 -0
  830. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +93 -0
  831. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +19 -0
  832. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +58 -0
  833. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +28 -0
  834. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +18 -0
  835. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PasswordDialogRes.h +5 -0
  836. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +201 -0
  837. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +171 -0
  838. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog.rc +12 -0
  839. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +1483 -0
  840. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +355 -0
  841. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.rc +40 -0
  842. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +49 -0
  843. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +85 -0
  844. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/ProgressDialogRes.h +3 -0
  845. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PropertyName.cpp +23 -0
  846. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PropertyName.h +10 -0
  847. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +104 -0
  848. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/StdAfx.h +67 -0
  849. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +351 -0
  850. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +65 -0
  851. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/resource.h +199 -0
  852. hdiffpatch/_c_src/lzma/CPP/7zip/UI/FileManager/resourceGui.h +25 -0
  853. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/7zG.exe.manifest +23 -0
  854. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/Extract.rc +59 -0
  855. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +421 -0
  856. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +113 -0
  857. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractDialog.rc +98 -0
  858. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractDialogRes.h +24 -0
  859. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +297 -0
  860. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +39 -0
  861. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/ExtractRes.h +51 -0
  862. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/HashGUI.h +27 -0
  863. hdiffpatch/_c_src/lzma/CPP/7zip/UI/GUI/resource2.h +2 -0
  864. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_clang.mak +3 -0
  865. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_clang_arm64.mak +3 -0
  866. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_clang_x64.mak +3 -0
  867. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_clang_x86.mak +3 -0
  868. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_gcc.mak +3 -0
  869. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_gcc_arm64.mak +3 -0
  870. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_gcc_x64.mak +3 -0
  871. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_gcc_x86.mak +3 -0
  872. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_mac_arm64.mak +3 -0
  873. hdiffpatch/_c_src/lzma/CPP/7zip/cmpl_mac_x64.mak +3 -0
  874. hdiffpatch/_c_src/lzma/CPP/7zip/var_clang.mak +11 -0
  875. hdiffpatch/_c_src/lzma/CPP/7zip/var_clang_arm64.mak +19 -0
  876. hdiffpatch/_c_src/lzma/CPP/7zip/var_clang_x64.mak +11 -0
  877. hdiffpatch/_c_src/lzma/CPP/7zip/var_clang_x86.mak +11 -0
  878. hdiffpatch/_c_src/lzma/CPP/7zip/var_gcc.mak +12 -0
  879. hdiffpatch/_c_src/lzma/CPP/7zip/var_gcc_arm64.mak +12 -0
  880. hdiffpatch/_c_src/lzma/CPP/7zip/var_gcc_x64.mak +11 -0
  881. hdiffpatch/_c_src/lzma/CPP/7zip/var_gcc_x86.mak +10 -0
  882. hdiffpatch/_c_src/lzma/CPP/7zip/var_mac_arm64.mak +13 -0
  883. hdiffpatch/_c_src/lzma/CPP/7zip/var_mac_x64.mak +11 -0
  884. hdiffpatch/_c_src/lzma/CPP/7zip/warn_clang.mak +3 -0
  885. hdiffpatch/_c_src/lzma/CPP/7zip/warn_clang_mac.mak +9 -0
  886. hdiffpatch/_c_src/lzma/CPP/7zip/warn_gcc.mak +55 -0
  887. hdiffpatch/_c_src/lzma/CPP/Build.mak +246 -0
  888. hdiffpatch/_c_src/lzma/CPP/Common/AutoPtr.h +46 -0
  889. hdiffpatch/_c_src/lzma/CPP/Common/CRC.cpp +7 -0
  890. hdiffpatch/_c_src/lzma/CPP/Common/C_FileIO.cpp +3 -0
  891. hdiffpatch/_c_src/lzma/CPP/Common/C_FileIO.h +6 -0
  892. hdiffpatch/_c_src/lzma/CPP/Common/ComTry.h +21 -0
  893. hdiffpatch/_c_src/lzma/CPP/Common/CommandLineParser.cpp +231 -0
  894. hdiffpatch/_c_src/lzma/CPP/Common/CommandLineParser.h +63 -0
  895. hdiffpatch/_c_src/lzma/CPP/Common/Common.h +28 -0
  896. hdiffpatch/_c_src/lzma/CPP/Common/Common0.h +330 -0
  897. hdiffpatch/_c_src/lzma/CPP/Common/CrcReg.cpp +77 -0
  898. hdiffpatch/_c_src/lzma/CPP/Common/Defs.h +16 -0
  899. hdiffpatch/_c_src/lzma/CPP/Common/DynLimBuf.cpp +93 -0
  900. hdiffpatch/_c_src/lzma/CPP/Common/DynLimBuf.h +41 -0
  901. hdiffpatch/_c_src/lzma/CPP/Common/DynamicBuffer.h +76 -0
  902. hdiffpatch/_c_src/lzma/CPP/Common/IntToString.cpp +215 -0
  903. hdiffpatch/_c_src/lzma/CPP/Common/IntToString.h +54 -0
  904. hdiffpatch/_c_src/lzma/CPP/Common/Lang.h +30 -0
  905. hdiffpatch/_c_src/lzma/CPP/Common/ListFileUtils.cpp +150 -0
  906. hdiffpatch/_c_src/lzma/CPP/Common/ListFileUtils.h +18 -0
  907. hdiffpatch/_c_src/lzma/CPP/Common/LzFindPrepare.cpp +7 -0
  908. hdiffpatch/_c_src/lzma/CPP/Common/MyBuffer.h +297 -0
  909. hdiffpatch/_c_src/lzma/CPP/Common/MyBuffer2.h +185 -0
  910. hdiffpatch/_c_src/lzma/CPP/Common/MyCom.h +693 -0
  911. hdiffpatch/_c_src/lzma/CPP/Common/MyException.h +14 -0
  912. hdiffpatch/_c_src/lzma/CPP/Common/MyGuidDef.h +63 -0
  913. hdiffpatch/_c_src/lzma/CPP/Common/MyInitGuid.h +57 -0
  914. hdiffpatch/_c_src/lzma/CPP/Common/MyLinux.h +75 -0
  915. hdiffpatch/_c_src/lzma/CPP/Common/MyString.cpp +1871 -0
  916. hdiffpatch/_c_src/lzma/CPP/Common/MyString.h +1078 -0
  917. hdiffpatch/_c_src/lzma/CPP/Common/MyTypes.h +38 -0
  918. hdiffpatch/_c_src/lzma/CPP/Common/MyUnknown.h +8 -0
  919. hdiffpatch/_c_src/lzma/CPP/Common/MyVector.cpp +3 -0
  920. hdiffpatch/_c_src/lzma/CPP/Common/MyVector.h +724 -0
  921. hdiffpatch/_c_src/lzma/CPP/Common/MyWindows.cpp +292 -0
  922. hdiffpatch/_c_src/lzma/CPP/Common/MyWindows.h +325 -0
  923. hdiffpatch/_c_src/lzma/CPP/Common/NewHandler.cpp +340 -0
  924. hdiffpatch/_c_src/lzma/CPP/Common/NewHandler.h +121 -0
  925. hdiffpatch/_c_src/lzma/CPP/Common/Sha256Prepare.cpp +7 -0
  926. hdiffpatch/_c_src/lzma/CPP/Common/Sha256Reg.cpp +67 -0
  927. hdiffpatch/_c_src/lzma/CPP/Common/StdAfx.h +8 -0
  928. hdiffpatch/_c_src/lzma/CPP/Common/StdInStream.cpp +98 -0
  929. hdiffpatch/_c_src/lzma/CPP/Common/StdInStream.h +46 -0
  930. hdiffpatch/_c_src/lzma/CPP/Common/StdOutStream.cpp +248 -0
  931. hdiffpatch/_c_src/lzma/CPP/Common/StdOutStream.h +87 -0
  932. hdiffpatch/_c_src/lzma/CPP/Common/StringConvert.cpp +762 -0
  933. hdiffpatch/_c_src/lzma/CPP/Common/StringConvert.h +110 -0
  934. hdiffpatch/_c_src/lzma/CPP/Common/StringToInt.cpp +154 -0
  935. hdiffpatch/_c_src/lzma/CPP/Common/StringToInt.h +38 -0
  936. hdiffpatch/_c_src/lzma/CPP/Common/TextConfig.cpp +123 -0
  937. hdiffpatch/_c_src/lzma/CPP/Common/TextConfig.h +19 -0
  938. hdiffpatch/_c_src/lzma/CPP/Common/UTFConvert.cpp +863 -0
  939. hdiffpatch/_c_src/lzma/CPP/Common/UTFConvert.h +384 -0
  940. hdiffpatch/_c_src/lzma/CPP/Common/Wildcard.cpp +788 -0
  941. hdiffpatch/_c_src/lzma/CPP/Common/Wildcard.h +231 -0
  942. hdiffpatch/_c_src/lzma/CPP/Common/XzCrc64Init.cpp +7 -0
  943. hdiffpatch/_c_src/lzma/CPP/Common/XzCrc64Reg.cpp +39 -0
  944. hdiffpatch/_c_src/lzma/CPP/Windows/COM.h +86 -0
  945. hdiffpatch/_c_src/lzma/CPP/Windows/Clipboard.cpp +130 -0
  946. hdiffpatch/_c_src/lzma/CPP/Windows/Clipboard.h +28 -0
  947. hdiffpatch/_c_src/lzma/CPP/Windows/CommonDialog.cpp +269 -0
  948. hdiffpatch/_c_src/lzma/CPP/Windows/CommonDialog.h +43 -0
  949. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ComboBox.cpp +66 -0
  950. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ComboBox.h +77 -0
  951. hdiffpatch/_c_src/lzma/CPP/Windows/Control/CommandBar.h +52 -0
  952. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Dialog.cpp +446 -0
  953. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Dialog.h +213 -0
  954. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Edit.h +19 -0
  955. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ImageList.cpp +10 -0
  956. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ImageList.h +87 -0
  957. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ListView.cpp +162 -0
  958. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ListView.h +156 -0
  959. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ProgressBar.h +35 -0
  960. hdiffpatch/_c_src/lzma/CPP/Windows/Control/PropertyPage.cpp +165 -0
  961. hdiffpatch/_c_src/lzma/CPP/Windows/Control/PropertyPage.h +50 -0
  962. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ReBar.h +34 -0
  963. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Static.h +28 -0
  964. hdiffpatch/_c_src/lzma/CPP/Windows/Control/StatusBar.h +42 -0
  965. hdiffpatch/_c_src/lzma/CPP/Windows/Control/StdAfx.h +11 -0
  966. hdiffpatch/_c_src/lzma/CPP/Windows/Control/ToolBar.h +43 -0
  967. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Trackbar.h +27 -0
  968. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Window2.cpp +202 -0
  969. hdiffpatch/_c_src/lzma/CPP/Windows/Control/Window2.h +53 -0
  970. hdiffpatch/_c_src/lzma/CPP/Windows/DLL.cpp +178 -0
  971. hdiffpatch/_c_src/lzma/CPP/Windows/DLL.h +103 -0
  972. hdiffpatch/_c_src/lzma/CPP/Windows/Defs.h +17 -0
  973. hdiffpatch/_c_src/lzma/CPP/Windows/ErrorMsg.cpp +133 -0
  974. hdiffpatch/_c_src/lzma/CPP/Windows/ErrorMsg.h +16 -0
  975. hdiffpatch/_c_src/lzma/CPP/Windows/FileDir.cpp +1331 -0
  976. hdiffpatch/_c_src/lzma/CPP/Windows/FileDir.h +156 -0
  977. hdiffpatch/_c_src/lzma/CPP/Windows/FileFind.cpp +1442 -0
  978. hdiffpatch/_c_src/lzma/CPP/Windows/FileFind.h +347 -0
  979. hdiffpatch/_c_src/lzma/CPP/Windows/FileIO.cpp +954 -0
  980. hdiffpatch/_c_src/lzma/CPP/Windows/FileIO.h +448 -0
  981. hdiffpatch/_c_src/lzma/CPP/Windows/FileLink.cpp +621 -0
  982. hdiffpatch/_c_src/lzma/CPP/Windows/FileMapping.cpp +12 -0
  983. hdiffpatch/_c_src/lzma/CPP/Windows/FileMapping.h +66 -0
  984. hdiffpatch/_c_src/lzma/CPP/Windows/FileName.cpp +896 -0
  985. hdiffpatch/_c_src/lzma/CPP/Windows/FileName.h +133 -0
  986. hdiffpatch/_c_src/lzma/CPP/Windows/FileSystem.cpp +187 -0
  987. hdiffpatch/_c_src/lzma/CPP/Windows/FileSystem.h +31 -0
  988. hdiffpatch/_c_src/lzma/CPP/Windows/Handle.h +39 -0
  989. hdiffpatch/_c_src/lzma/CPP/Windows/MemoryGlobal.cpp +36 -0
  990. hdiffpatch/_c_src/lzma/CPP/Windows/MemoryGlobal.h +55 -0
  991. hdiffpatch/_c_src/lzma/CPP/Windows/MemoryLock.cpp +127 -0
  992. hdiffpatch/_c_src/lzma/CPP/Windows/MemoryLock.h +40 -0
  993. hdiffpatch/_c_src/lzma/CPP/Windows/NtCheck.h +58 -0
  994. hdiffpatch/_c_src/lzma/CPP/Windows/PropVariant.cpp +393 -0
  995. hdiffpatch/_c_src/lzma/CPP/Windows/PropVariant.h +173 -0
  996. hdiffpatch/_c_src/lzma/CPP/Windows/PropVariantConv.cpp +274 -0
  997. hdiffpatch/_c_src/lzma/CPP/Windows/PropVariantConv.h +47 -0
  998. hdiffpatch/_c_src/lzma/CPP/Windows/Registry.cpp +474 -0
  999. hdiffpatch/_c_src/lzma/CPP/Windows/Registry.h +96 -0
  1000. hdiffpatch/_c_src/lzma/CPP/Windows/ResourceString.cpp +103 -0
  1001. hdiffpatch/_c_src/lzma/CPP/Windows/ResourceString.h +17 -0
  1002. hdiffpatch/_c_src/lzma/CPP/Windows/SecurityUtils.cpp +186 -0
  1003. hdiffpatch/_c_src/lzma/CPP/Windows/SecurityUtils.h +150 -0
  1004. hdiffpatch/_c_src/lzma/CPP/Windows/Shell.cpp +839 -0
  1005. hdiffpatch/_c_src/lzma/CPP/Windows/Shell.h +129 -0
  1006. hdiffpatch/_c_src/lzma/CPP/Windows/StdAfx.h +11 -0
  1007. hdiffpatch/_c_src/lzma/CPP/Windows/Synchronization.cpp +87 -0
  1008. hdiffpatch/_c_src/lzma/CPP/Windows/Synchronization.h +386 -0
  1009. hdiffpatch/_c_src/lzma/CPP/Windows/System.cpp +327 -0
  1010. hdiffpatch/_c_src/lzma/CPP/Windows/System.h +132 -0
  1011. hdiffpatch/_c_src/lzma/CPP/Windows/SystemInfo.cpp +1251 -0
  1012. hdiffpatch/_c_src/lzma/CPP/Windows/SystemInfo.h +19 -0
  1013. hdiffpatch/_c_src/lzma/CPP/Windows/Thread.h +44 -0
  1014. hdiffpatch/_c_src/lzma/CPP/Windows/TimeUtils.cpp +466 -0
  1015. hdiffpatch/_c_src/lzma/CPP/Windows/TimeUtils.h +146 -0
  1016. hdiffpatch/_c_src/lzma/CPP/Windows/Window.cpp +179 -0
  1017. hdiffpatch/_c_src/lzma/CPP/Windows/Window.h +363 -0
  1018. hdiffpatch/_c_src/lzma/CS/7zip/Common/CRC.cs +55 -0
  1019. hdiffpatch/_c_src/lzma/CS/7zip/Common/CommandLineParser.cs +274 -0
  1020. hdiffpatch/_c_src/lzma/CS/7zip/Common/InBuffer.cs +72 -0
  1021. hdiffpatch/_c_src/lzma/CS/7zip/Common/OutBuffer.cs +47 -0
  1022. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZ/IMatchFinder.cs +24 -0
  1023. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZ/LzBinTree.cs +367 -0
  1024. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZ/LzInWindow.cs +132 -0
  1025. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZ/LzOutWindow.cs +110 -0
  1026. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZMA/LzmaBase.cs +76 -0
  1027. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZMA/LzmaDecoder.cs +398 -0
  1028. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LZMA/LzmaEncoder.cs +1480 -0
  1029. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.cs +364 -0
  1030. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.sln +20 -0
  1031. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LzmaAlone/LzmaBench.cs +340 -0
  1032. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LzmaAlone/Properties/AssemblyInfo.cs +29 -0
  1033. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LzmaAlone/Properties/Resources.cs +70 -0
  1034. hdiffpatch/_c_src/lzma/CS/7zip/Compress/LzmaAlone/Properties/Settings.cs +42 -0
  1035. hdiffpatch/_c_src/lzma/CS/7zip/Compress/RangeCoder/RangeCoder.cs +234 -0
  1036. hdiffpatch/_c_src/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBit.cs +117 -0
  1037. hdiffpatch/_c_src/lzma/CS/7zip/Compress/RangeCoder/RangeCoderBitTree.cs +157 -0
  1038. hdiffpatch/_c_src/lzma/CS/7zip/ICoder.cs +157 -0
  1039. hdiffpatch/_c_src/lzma/DOC/7zC.txt +187 -0
  1040. hdiffpatch/_c_src/lzma/DOC/7zFormat.txt +469 -0
  1041. hdiffpatch/_c_src/lzma/DOC/Methods.txt +177 -0
  1042. hdiffpatch/_c_src/lzma/DOC/installer.txt +166 -0
  1043. hdiffpatch/_c_src/lzma/DOC/lzma-history.txt +634 -0
  1044. hdiffpatch/_c_src/lzma/DOC/lzma-sdk.txt +409 -0
  1045. hdiffpatch/_c_src/lzma/DOC/lzma-specification.txt +1176 -0
  1046. hdiffpatch/_c_src/lzma/DOC/lzma.txt +345 -0
  1047. hdiffpatch/_c_src/lzma/Java/SevenZip/CRC.java +52 -0
  1048. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/LZ/BinTree.java +382 -0
  1049. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/LZ/InWindow.java +131 -0
  1050. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/LZ/OutWindow.java +85 -0
  1051. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/LZMA/Base.java +88 -0
  1052. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/LZMA/Decoder.java +329 -0
  1053. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/LZMA/Encoder.java +1416 -0
  1054. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +55 -0
  1055. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +99 -0
  1056. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/RangeCoder/Decoder.java +88 -0
  1057. hdiffpatch/_c_src/lzma/Java/SevenZip/Compression/RangeCoder/Encoder.java +151 -0
  1058. hdiffpatch/_c_src/lzma/Java/SevenZip/ICodeProgress.java +6 -0
  1059. hdiffpatch/_c_src/lzma/Java/SevenZip/LzmaAlone.java +253 -0
  1060. hdiffpatch/_c_src/lzma/Java/SevenZip/LzmaBench.java +392 -0
  1061. hdiffpatch/_c_src/lzma/bin/7zS2.sfx +0 -0
  1062. hdiffpatch/_c_src/lzma/bin/7zS2con.sfx +0 -0
  1063. hdiffpatch/_c_src/lzma/bin/7zSD.sfx +0 -0
  1064. hdiffpatch/_c_src/lzma/bin/7zdec.exe +0 -0
  1065. hdiffpatch/_c_src/lzma/bin/7zr.exe +0 -0
  1066. hdiffpatch/_c_src/lzma/bin/installer/config.txt +5 -0
  1067. hdiffpatch/_c_src/lzma/bin/installer/cr.bat +5 -0
  1068. hdiffpatch/_c_src/lzma/bin/lzma.exe +0 -0
  1069. hdiffpatch/_c_src/lzma/bin/x64/7zr.exe +0 -0
  1070. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/argparse/__init__.py +226 -0
  1071. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/collections/__init__.py +16 -0
  1072. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/collections/deque.py +58 -0
  1073. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/fnmatch/__init__.py +139 -0
  1074. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/pathlib/__init__.py +207 -0
  1075. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/shutil/__init__.py +48 -0
  1076. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/tempfile/__init__.py +59 -0
  1077. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/unittest/__init__.py +463 -0
  1078. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/unittest/__main__.py +146 -0
  1079. hdiffpatch/_c_src/tamp/.belay/dependencies/dev/uprofiler/__init__.py +108 -0
  1080. hdiffpatch/_c_src/tamp/.bumpversion.cfg +24 -0
  1081. hdiffpatch/_c_src/tamp/.clang-format +5 -0
  1082. hdiffpatch/_c_src/tamp/.codecov.yml +14 -0
  1083. hdiffpatch/_c_src/tamp/.git +1 -0
  1084. hdiffpatch/_c_src/tamp/.github/FUNDING.yml +13 -0
  1085. hdiffpatch/_c_src/tamp/.github/contributing.md +43 -0
  1086. hdiffpatch/_c_src/tamp/.github/dependabot.yml +11 -0
  1087. hdiffpatch/_c_src/tamp/.github/workflows/build_wheels.yaml +291 -0
  1088. hdiffpatch/_c_src/tamp/.github/workflows/esp_upload_component.yml +49 -0
  1089. hdiffpatch/_c_src/tamp/.github/workflows/mpy_native_module.yaml +236 -0
  1090. hdiffpatch/_c_src/tamp/.github/workflows/tests.yaml +134 -0
  1091. hdiffpatch/_c_src/tamp/.gitignore +262 -0
  1092. hdiffpatch/_c_src/tamp/.gitmodules +3 -0
  1093. hdiffpatch/_c_src/tamp/.pre-commit-config.yaml +69 -0
  1094. hdiffpatch/_c_src/tamp/.readthedocs.yaml +32 -0
  1095. hdiffpatch/_c_src/tamp/LICENSE +201 -0
  1096. hdiffpatch/_c_src/tamp/MICROPYTHON_TESTING.rst +7 -0
  1097. hdiffpatch/_c_src/tamp/Makefile +195 -0
  1098. hdiffpatch/_c_src/tamp/README.md +300 -0
  1099. hdiffpatch/_c_src/tamp/assets/favicon-16x16.png +0 -0
  1100. hdiffpatch/_c_src/tamp/assets/favicon-32x32.png +0 -0
  1101. hdiffpatch/_c_src/tamp/assets/icon.png +0 -0
  1102. hdiffpatch/_c_src/tamp/assets/logo.png +0 -0
  1103. hdiffpatch/_c_src/tamp/assets/logo_200w.png +0 -0
  1104. hdiffpatch/_c_src/tamp/assets/logo_300w.png +0 -0
  1105. hdiffpatch/_c_src/tamp/assets/match-size-plot.png +0 -0
  1106. hdiffpatch/_c_src/tamp/assets/social_media.png +0 -0
  1107. hdiffpatch/_c_src/tamp/build.py +104 -0
  1108. hdiffpatch/_c_src/tamp/ctests/Unity/.editorconfig +27 -0
  1109. hdiffpatch/_c_src/tamp/ctests/Unity/.git +1 -0
  1110. hdiffpatch/_c_src/tamp/ctests/Unity/.gitattributes +31 -0
  1111. hdiffpatch/_c_src/tamp/ctests/Unity/.github/workflows/main.yml +32 -0
  1112. hdiffpatch/_c_src/tamp/ctests/Unity/.gitignore +13 -0
  1113. hdiffpatch/_c_src/tamp/ctests/Unity/CMakeLists.txt +159 -0
  1114. hdiffpatch/_c_src/tamp/ctests/Unity/LICENSE.txt +21 -0
  1115. hdiffpatch/_c_src/tamp/ctests/Unity/README.md +200 -0
  1116. hdiffpatch/_c_src/tamp/ctests/Unity/auto/colour_prompt.rb +119 -0
  1117. hdiffpatch/_c_src/tamp/ctests/Unity/auto/colour_reporter.rb +39 -0
  1118. hdiffpatch/_c_src/tamp/ctests/Unity/auto/generate_config.yml +36 -0
  1119. hdiffpatch/_c_src/tamp/ctests/Unity/auto/generate_module.rb +313 -0
  1120. hdiffpatch/_c_src/tamp/ctests/Unity/auto/generate_test_runner.rb +511 -0
  1121. hdiffpatch/_c_src/tamp/ctests/Unity/auto/parse_output.rb +322 -0
  1122. hdiffpatch/_c_src/tamp/ctests/Unity/auto/run_test.erb +37 -0
  1123. hdiffpatch/_c_src/tamp/ctests/Unity/auto/stylize_as_junit.rb +251 -0
  1124. hdiffpatch/_c_src/tamp/ctests/Unity/auto/test_file_filter.rb +25 -0
  1125. hdiffpatch/_c_src/tamp/ctests/Unity/auto/type_sanitizer.rb +6 -0
  1126. hdiffpatch/_c_src/tamp/ctests/Unity/auto/unity_test_summary.py +139 -0
  1127. hdiffpatch/_c_src/tamp/ctests/Unity/auto/unity_test_summary.rb +135 -0
  1128. hdiffpatch/_c_src/tamp/ctests/Unity/auto/unity_to_junit.py +146 -0
  1129. hdiffpatch/_c_src/tamp/ctests/Unity/docs/ThrowTheSwitchCodingStandard.md +206 -0
  1130. hdiffpatch/_c_src/tamp/ctests/Unity/docs/UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf +0 -0
  1131. hdiffpatch/_c_src/tamp/ctests/Unity/docs/UnityAssertionsReference.md +831 -0
  1132. hdiffpatch/_c_src/tamp/ctests/Unity/docs/UnityConfigurationGuide.md +563 -0
  1133. hdiffpatch/_c_src/tamp/ctests/Unity/docs/UnityGettingStartedGuide.md +251 -0
  1134. hdiffpatch/_c_src/tamp/ctests/Unity/docs/UnityHelperScriptsGuide.md +278 -0
  1135. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/makefile +72 -0
  1136. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/readme.txt +5 -0
  1137. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/src/ProductionCode.c +24 -0
  1138. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/src/ProductionCode.h +3 -0
  1139. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/src/ProductionCode2.c +11 -0
  1140. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/src/ProductionCode2.h +2 -0
  1141. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/test/TestProductionCode.c +62 -0
  1142. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/test/TestProductionCode2.c +31 -0
  1143. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/test/test_runners/TestProductionCode2_Runner.c +53 -0
  1144. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_1/test/test_runners/TestProductionCode_Runner.c +57 -0
  1145. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/makefile +71 -0
  1146. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/readme.txt +5 -0
  1147. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/src/ProductionCode.c +24 -0
  1148. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/src/ProductionCode.h +3 -0
  1149. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/src/ProductionCode2.c +11 -0
  1150. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/src/ProductionCode2.h +2 -0
  1151. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/test/TestProductionCode.c +64 -0
  1152. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/test/TestProductionCode2.c +33 -0
  1153. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/test/test_runners/TestProductionCode2_Runner.c +9 -0
  1154. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/test/test_runners/TestProductionCode_Runner.c +11 -0
  1155. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_2/test/test_runners/all_tests.c +12 -0
  1156. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/helper/UnityHelper.c +10 -0
  1157. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/helper/UnityHelper.h +12 -0
  1158. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/rakefile.rb +38 -0
  1159. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/rakefile_helper.rb +250 -0
  1160. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/readme.txt +13 -0
  1161. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/src/ProductionCode.c +24 -0
  1162. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/src/ProductionCode.h +3 -0
  1163. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/src/ProductionCode2.c +11 -0
  1164. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/src/ProductionCode2.h +2 -0
  1165. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/target_gcc_32.yml +47 -0
  1166. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/test/TestProductionCode.c +62 -0
  1167. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_3/test/TestProductionCode2.c +31 -0
  1168. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/meson.build +12 -0
  1169. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/readme.txt +15 -0
  1170. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/src/ProductionCode.c +24 -0
  1171. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/src/ProductionCode.h +3 -0
  1172. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/src/ProductionCode2.c +11 -0
  1173. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/src/ProductionCode2.h +2 -0
  1174. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/src/meson.build +16 -0
  1175. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/subprojects/unity.wrap +4 -0
  1176. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/test/TestProductionCode.c +63 -0
  1177. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/test/TestProductionCode2.c +35 -0
  1178. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/test/meson.build +7 -0
  1179. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/test/test_runners/TestProductionCode2_Runner.c +53 -0
  1180. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/test/test_runners/TestProductionCode_Runner.c +57 -0
  1181. hdiffpatch/_c_src/tamp/ctests/Unity/examples/example_4/test/test_runners/meson.build +13 -0
  1182. hdiffpatch/_c_src/tamp/ctests/Unity/examples/unity_config.h +244 -0
  1183. hdiffpatch/_c_src/tamp/ctests/Unity/extras/eclipse/error_parsers.txt +26 -0
  1184. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/readme.md +29 -0
  1185. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/src/unity_fixture.c +310 -0
  1186. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/src/unity_fixture.h +83 -0
  1187. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/src/unity_fixture_internals.h +50 -0
  1188. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/test/Makefile +72 -0
  1189. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/test/main/AllTests.c +20 -0
  1190. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/test/template_fixture_tests.c +39 -0
  1191. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/test/unity_fixture_Test.c +245 -0
  1192. hdiffpatch/_c_src/tamp/ctests/Unity/extras/fixture/test/unity_fixture_TestRunner.c +32 -0
  1193. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/readme.md +49 -0
  1194. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/src/unity_memory.c +202 -0
  1195. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/src/unity_memory.h +60 -0
  1196. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/test/Makefile +78 -0
  1197. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/test/unity_memory_Test.c +325 -0
  1198. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/test/unity_memory_TestRunner.c +49 -0
  1199. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/test/unity_output_Spy.c +56 -0
  1200. hdiffpatch/_c_src/tamp/ctests/Unity/extras/memory/test/unity_output_Spy.h +16 -0
  1201. hdiffpatch/_c_src/tamp/ctests/Unity/meson.build +14 -0
  1202. hdiffpatch/_c_src/tamp/ctests/Unity/src/meson.build +11 -0
  1203. hdiffpatch/_c_src/tamp/ctests/Unity/src/unity.c +2110 -0
  1204. hdiffpatch/_c_src/tamp/ctests/Unity/src/unity.h +661 -0
  1205. hdiffpatch/_c_src/tamp/ctests/Unity/src/unity_internals.h +1039 -0
  1206. hdiffpatch/_c_src/tamp/ctests/Unity/test/.rubocop.yml +76 -0
  1207. hdiffpatch/_c_src/tamp/ctests/Unity/test/Makefile +160 -0
  1208. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_cmd.c +61 -0
  1209. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_def.c +57 -0
  1210. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_head1.c +55 -0
  1211. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_head1.h +15 -0
  1212. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_cmd.c +80 -0
  1213. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_def.c +76 -0
  1214. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_head1.c +75 -0
  1215. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_head1.h +13 -0
  1216. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_new1.c +89 -0
  1217. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_new2.c +89 -0
  1218. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_param.c +77 -0
  1219. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_run1.c +89 -0
  1220. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_run2.c +89 -0
  1221. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_mock_yaml.c +90 -0
  1222. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_new1.c +67 -0
  1223. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_new2.c +70 -0
  1224. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_param.c +58 -0
  1225. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_run1.c +67 -0
  1226. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_run2.c +70 -0
  1227. hdiffpatch/_c_src/tamp/ctests/Unity/test/expectdata/testsample_yaml.c +71 -0
  1228. hdiffpatch/_c_src/tamp/ctests/Unity/test/rakefile +163 -0
  1229. hdiffpatch/_c_src/tamp/ctests/Unity/test/rakefile_helper.rb +315 -0
  1230. hdiffpatch/_c_src/tamp/ctests/Unity/test/spec/generate_module_existing_file_spec.rb +158 -0
  1231. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/ansi.yml +44 -0
  1232. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/clang_file.yml +72 -0
  1233. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/clang_strict.yml +71 -0
  1234. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/gcc_32.yml +45 -0
  1235. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/gcc_64.yml +46 -0
  1236. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/gcc_auto_limits.yml +43 -0
  1237. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/gcc_auto_stdint.yml +55 -0
  1238. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/gcc_manual_math.yml +43 -0
  1239. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/hitech_picc18.yml +91 -0
  1240. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_arm_v4.yml +98 -0
  1241. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_arm_v5.yml +92 -0
  1242. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_arm_v5_3.yml +92 -0
  1243. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_armcortex_LM3S9B92_v5_4.yml +90 -0
  1244. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_cortexm3_v5.yml +94 -0
  1245. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_msp430.yml +112 -0
  1246. hdiffpatch/_c_src/tamp/ctests/Unity/test/targets/iar_sh2a_v6.yml +99 -0
  1247. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/CException.h +11 -0
  1248. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/Defs.h +8 -0
  1249. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/cmock.h +14 -0
  1250. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/mockMock.h +13 -0
  1251. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/testRunnerGenerator.c +189 -0
  1252. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/testRunnerGeneratorSmall.c +70 -0
  1253. hdiffpatch/_c_src/tamp/ctests/Unity/test/testdata/testRunnerGeneratorWithMocks.c +197 -0
  1254. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/self_assessment_utils.h +144 -0
  1255. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_generate_test_runner.rb +1260 -0
  1256. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_arrays.c +2874 -0
  1257. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_core.c +371 -0
  1258. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_doubles.c +773 -0
  1259. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_floats.c +884 -0
  1260. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_integers.c +2847 -0
  1261. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_integers_64.c +773 -0
  1262. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_memory.c +81 -0
  1263. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_parameterized.c +171 -0
  1264. hdiffpatch/_c_src/tamp/ctests/Unity/test/tests/test_unity_strings.c +329 -0
  1265. hdiffpatch/_c_src/tamp/ctests/Unity/unityConfig.cmake +1 -0
  1266. hdiffpatch/_c_src/tamp/ctests/test_decompressor.c +81 -0
  1267. hdiffpatch/_c_src/tamp/docs/Makefile +21 -0
  1268. hdiffpatch/_c_src/tamp/docs/make.bat +35 -0
  1269. hdiffpatch/_c_src/tamp/docs/source/Installation.rst +97 -0
  1270. hdiffpatch/_c_src/tamp/docs/source/_static/.gitkeep +0 -0
  1271. hdiffpatch/_c_src/tamp/docs/source/_static/custom.css +13 -0
  1272. hdiffpatch/_c_src/tamp/docs/source/c_library.rst +339 -0
  1273. hdiffpatch/_c_src/tamp/docs/source/conf.py +195 -0
  1274. hdiffpatch/_c_src/tamp/docs/source/index.rst +16 -0
  1275. hdiffpatch/_c_src/tamp/docs/source/python_api.rst +66 -0
  1276. hdiffpatch/_c_src/tamp/docs/source/specification.rst +189 -0
  1277. hdiffpatch/_c_src/tamp/espidf/.gitignore +2 -0
  1278. hdiffpatch/_c_src/tamp/espidf/CMakeLists.txt +25 -0
  1279. hdiffpatch/_c_src/tamp/espidf/Kconfig +18 -0
  1280. hdiffpatch/_c_src/tamp/espidf/Makefile +4 -0
  1281. hdiffpatch/_c_src/tamp/espidf/compressor_esp32.cpp +139 -0
  1282. hdiffpatch/_c_src/tamp/espidf/idf_component.yml +9 -0
  1283. hdiffpatch/_c_src/tamp/espidf/private/copyutil.hpp +143 -0
  1284. hdiffpatch/_c_src/tamp/espidf/private/tamp_arch.hpp +70 -0
  1285. hdiffpatch/_c_src/tamp/espidf/private/tamp_search.hpp +831 -0
  1286. hdiffpatch/_c_src/tamp/mpy_bindings/bindings.c +293 -0
  1287. hdiffpatch/_c_src/tamp/mpy_bindings/bindings_common.py +16 -0
  1288. hdiffpatch/_c_src/tamp/mpy_bindings/bindings_compressor.py +56 -0
  1289. hdiffpatch/_c_src/tamp/mpy_bindings/bindings_decompressor.py +67 -0
  1290. hdiffpatch/_c_src/tamp/package-compressor.json +14 -0
  1291. hdiffpatch/_c_src/tamp/package-decompressor.json +14 -0
  1292. hdiffpatch/_c_src/tamp/package.json +18 -0
  1293. hdiffpatch/_c_src/tamp/poetry.lock +3348 -0
  1294. hdiffpatch/_c_src/tamp/pyproject.toml +249 -0
  1295. hdiffpatch/_c_src/tamp/tamp/__init__.py +87 -0
  1296. hdiffpatch/_c_src/tamp/tamp/__init__.pyi +57 -0
  1297. hdiffpatch/_c_src/tamp/tamp/__main__.py +3 -0
  1298. hdiffpatch/_c_src/tamp/tamp/_c_common.pxd +4 -0
  1299. hdiffpatch/_c_src/tamp/tamp/_c_common.pyx +15 -0
  1300. hdiffpatch/_c_src/tamp/tamp/_c_compressor.pyx +151 -0
  1301. hdiffpatch/_c_src/tamp/tamp/_c_decompressor.pyx +147 -0
  1302. hdiffpatch/_c_src/tamp/tamp/_c_src/tamp/common.c +29 -0
  1303. hdiffpatch/_c_src/tamp/tamp/_c_src/tamp/common.h +102 -0
  1304. hdiffpatch/_c_src/tamp/tamp/_c_src/tamp/compressor.c +299 -0
  1305. hdiffpatch/_c_src/tamp/tamp/_c_src/tamp/compressor.h +240 -0
  1306. hdiffpatch/_c_src/tamp/tamp/_c_src/tamp/decompressor.c +233 -0
  1307. hdiffpatch/_c_src/tamp/tamp/_c_src/tamp/decompressor.h +106 -0
  1308. hdiffpatch/_c_src/tamp/tamp/cli/__init__.py +0 -0
  1309. hdiffpatch/_c_src/tamp/tamp/cli/main.py +89 -0
  1310. hdiffpatch/_c_src/tamp/tamp/compressor.py +327 -0
  1311. hdiffpatch/_c_src/tamp/tamp/compressor_viper.py +225 -0
  1312. hdiffpatch/_c_src/tamp/tamp/ctamp.pxd +89 -0
  1313. hdiffpatch/_c_src/tamp/tamp/decompressor.py +336 -0
  1314. hdiffpatch/_c_src/tamp/tamp/decompressor_viper.py +220 -0
  1315. hdiffpatch/_c_src/tamp/tamp/py.typed +0 -0
  1316. hdiffpatch/_c_src/tamp/tests/test_bit_writer_reader.py +59 -0
  1317. hdiffpatch/_c_src/tamp/tests/test_cli.py +78 -0
  1318. hdiffpatch/_c_src/tamp/tests/test_compressor.py +304 -0
  1319. hdiffpatch/_c_src/tamp/tests/test_compressor_decompressor.py +128 -0
  1320. hdiffpatch/_c_src/tamp/tests/test_compressor_helpers.py +19 -0
  1321. hdiffpatch/_c_src/tamp/tests/test_decompressor.py +219 -0
  1322. hdiffpatch/_c_src/tamp/tests/test_file_interface.py +84 -0
  1323. hdiffpatch/_c_src/tamp/tests/test_pseudorandom.py +59 -0
  1324. hdiffpatch/_c_src/tamp/tools/analysis.py +116 -0
  1325. hdiffpatch/_c_src/tamp/tools/c-profiler/.gitignore +1 -0
  1326. hdiffpatch/_c_src/tamp/tools/c-profiler/Makefile +55 -0
  1327. hdiffpatch/_c_src/tamp/tools/c-profiler/main.c +128 -0
  1328. hdiffpatch/_c_src/tamp/tools/collect-data.py +74 -0
  1329. hdiffpatch/_c_src/tamp/tools/compute_min_output_flush_size.py +39 -0
  1330. hdiffpatch/_c_src/tamp/tools/find_seed.py +140 -0
  1331. hdiffpatch/_c_src/tamp/tools/huffman.py +52 -0
  1332. hdiffpatch/_c_src/tamp/tools/huffman_jump_table.py +47 -0
  1333. hdiffpatch/_c_src/tamp/tools/micropython-compression-benchmark.py +19 -0
  1334. hdiffpatch/_c_src/tamp/tools/on-device-compression-benchmark.py +27 -0
  1335. hdiffpatch/_c_src/tamp/tools/on-device-decompression-benchmark.py +27 -0
  1336. hdiffpatch/_c_src/tamp/tools/performance-benchmark.sh +13 -0
  1337. hdiffpatch/_c_src/tamp/tools/pi_pico/.gitignore +4 -0
  1338. hdiffpatch/_c_src/tamp/tools/pi_pico/benchmark/CMakeLists.txt +60 -0
  1339. hdiffpatch/_c_src/tamp/tools/pi_pico/benchmark/Makefile +12 -0
  1340. hdiffpatch/_c_src/tamp/tools/pi_pico/benchmark/main.c +67 -0
  1341. hdiffpatch/_c_src/tamp/tools/pi_pico/library-size/.gitignore +3 -0
  1342. hdiffpatch/_c_src/tamp/tools/pi_pico/library-size/CMakeLists.txt +43 -0
  1343. hdiffpatch/_c_src/tamp/tools/pi_pico/library-size/Makefile +45 -0
  1344. hdiffpatch/_c_src/tamp/tools/pi_pico/library-size/README.md +3 -0
  1345. hdiffpatch/_c_src/tamp/tools/profiler.py +15 -0
  1346. hdiffpatch/_c_src/tamp/tools/zlib_compress.py +20 -0
  1347. hdiffpatch/_c_src/tamp/tools/zlib_decompress.py +11 -0
  1348. hdiffpatch/_c_src/tamp_compress_plugin.cpp +328 -0
  1349. hdiffpatch/_c_src/zlib/.git +1 -0
  1350. hdiffpatch/_c_src/zlib/.github/workflows/cmake.yml +89 -0
  1351. hdiffpatch/_c_src/zlib/.github/workflows/configure.yml +136 -0
  1352. hdiffpatch/_c_src/zlib/.github/workflows/fuzz.yml +25 -0
  1353. hdiffpatch/_c_src/zlib/.gitignore +36 -0
  1354. hdiffpatch/_c_src/zlib/CMakeLists.txt +218 -0
  1355. hdiffpatch/_c_src/zlib/ChangeLog +1618 -0
  1356. hdiffpatch/_c_src/zlib/FAQ +367 -0
  1357. hdiffpatch/_c_src/zlib/INDEX +68 -0
  1358. hdiffpatch/_c_src/zlib/LICENSE +22 -0
  1359. hdiffpatch/_c_src/zlib/Makefile +5 -0
  1360. hdiffpatch/_c_src/zlib/Makefile.in +410 -0
  1361. hdiffpatch/_c_src/zlib/README +117 -0
  1362. hdiffpatch/_c_src/zlib/adler32.c +164 -0
  1363. hdiffpatch/_c_src/zlib/amiga/Makefile.pup +69 -0
  1364. hdiffpatch/_c_src/zlib/amiga/Makefile.sas +68 -0
  1365. hdiffpatch/_c_src/zlib/compress.c +75 -0
  1366. hdiffpatch/_c_src/zlib/configure +929 -0
  1367. hdiffpatch/_c_src/zlib/contrib/README.contrib +57 -0
  1368. hdiffpatch/_c_src/zlib/contrib/ada/buffer_demo.adb +106 -0
  1369. hdiffpatch/_c_src/zlib/contrib/ada/mtest.adb +156 -0
  1370. hdiffpatch/_c_src/zlib/contrib/ada/read.adb +156 -0
  1371. hdiffpatch/_c_src/zlib/contrib/ada/readme.txt +65 -0
  1372. hdiffpatch/_c_src/zlib/contrib/ada/test.adb +463 -0
  1373. hdiffpatch/_c_src/zlib/contrib/ada/zlib-streams.adb +225 -0
  1374. hdiffpatch/_c_src/zlib/contrib/ada/zlib-streams.ads +114 -0
  1375. hdiffpatch/_c_src/zlib/contrib/ada/zlib-thin.adb +141 -0
  1376. hdiffpatch/_c_src/zlib/contrib/ada/zlib-thin.ads +450 -0
  1377. hdiffpatch/_c_src/zlib/contrib/ada/zlib.adb +701 -0
  1378. hdiffpatch/_c_src/zlib/contrib/ada/zlib.ads +328 -0
  1379. hdiffpatch/_c_src/zlib/contrib/ada/zlib.gpr +20 -0
  1380. hdiffpatch/_c_src/zlib/contrib/blast/Makefile +8 -0
  1381. hdiffpatch/_c_src/zlib/contrib/blast/README +4 -0
  1382. hdiffpatch/_c_src/zlib/contrib/blast/blast.c +466 -0
  1383. hdiffpatch/_c_src/zlib/contrib/blast/blast.h +83 -0
  1384. hdiffpatch/_c_src/zlib/contrib/blast/test.pk +0 -0
  1385. hdiffpatch/_c_src/zlib/contrib/blast/test.txt +1 -0
  1386. hdiffpatch/_c_src/zlib/contrib/delphi/ZLib.pas +557 -0
  1387. hdiffpatch/_c_src/zlib/contrib/delphi/ZLibConst.pas +11 -0
  1388. hdiffpatch/_c_src/zlib/contrib/delphi/readme.txt +76 -0
  1389. hdiffpatch/_c_src/zlib/contrib/delphi/zlibd32.mak +99 -0
  1390. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  1391. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  1392. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  1393. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  1394. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  1395. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  1396. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  1397. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  1398. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  1399. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  1400. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib.build +33 -0
  1401. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  1402. hdiffpatch/_c_src/zlib/contrib/dotzlib/DotZLib.sln +21 -0
  1403. hdiffpatch/_c_src/zlib/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  1404. hdiffpatch/_c_src/zlib/contrib/dotzlib/readme.txt +58 -0
  1405. hdiffpatch/_c_src/zlib/contrib/gcc_gvmat64/gvmat64.S +574 -0
  1406. hdiffpatch/_c_src/zlib/contrib/infback9/README +1 -0
  1407. hdiffpatch/_c_src/zlib/contrib/infback9/infback9.c +603 -0
  1408. hdiffpatch/_c_src/zlib/contrib/infback9/infback9.h +37 -0
  1409. hdiffpatch/_c_src/zlib/contrib/infback9/inffix9.h +107 -0
  1410. hdiffpatch/_c_src/zlib/contrib/infback9/inflate9.h +47 -0
  1411. hdiffpatch/_c_src/zlib/contrib/infback9/inftree9.c +319 -0
  1412. hdiffpatch/_c_src/zlib/contrib/infback9/inftree9.h +61 -0
  1413. hdiffpatch/_c_src/zlib/contrib/iostream/test.cpp +24 -0
  1414. hdiffpatch/_c_src/zlib/contrib/iostream/zfstream.cpp +329 -0
  1415. hdiffpatch/_c_src/zlib/contrib/iostream/zfstream.h +128 -0
  1416. hdiffpatch/_c_src/zlib/contrib/iostream2/zstream.h +307 -0
  1417. hdiffpatch/_c_src/zlib/contrib/iostream2/zstream_test.cpp +25 -0
  1418. hdiffpatch/_c_src/zlib/contrib/iostream3/README +35 -0
  1419. hdiffpatch/_c_src/zlib/contrib/iostream3/TODO +17 -0
  1420. hdiffpatch/_c_src/zlib/contrib/iostream3/test.cc +50 -0
  1421. hdiffpatch/_c_src/zlib/contrib/iostream3/zfstream.cc +479 -0
  1422. hdiffpatch/_c_src/zlib/contrib/iostream3/zfstream.h +466 -0
  1423. hdiffpatch/_c_src/zlib/contrib/minizip/Makefile +29 -0
  1424. hdiffpatch/_c_src/zlib/contrib/minizip/Makefile.am +45 -0
  1425. hdiffpatch/_c_src/zlib/contrib/minizip/MiniZip64_Changes.txt +6 -0
  1426. hdiffpatch/_c_src/zlib/contrib/minizip/MiniZip64_info.txt +74 -0
  1427. hdiffpatch/_c_src/zlib/contrib/minizip/configure.ac +32 -0
  1428. hdiffpatch/_c_src/zlib/contrib/minizip/crypt.h +128 -0
  1429. hdiffpatch/_c_src/zlib/contrib/minizip/ioapi.c +231 -0
  1430. hdiffpatch/_c_src/zlib/contrib/minizip/ioapi.h +210 -0
  1431. hdiffpatch/_c_src/zlib/contrib/minizip/iowin32.c +440 -0
  1432. hdiffpatch/_c_src/zlib/contrib/minizip/iowin32.h +28 -0
  1433. hdiffpatch/_c_src/zlib/contrib/minizip/make_vms.com +25 -0
  1434. hdiffpatch/_c_src/zlib/contrib/minizip/miniunz.c +647 -0
  1435. hdiffpatch/_c_src/zlib/contrib/minizip/miniunzip.1 +63 -0
  1436. hdiffpatch/_c_src/zlib/contrib/minizip/minizip.1 +46 -0
  1437. hdiffpatch/_c_src/zlib/contrib/minizip/minizip.c +509 -0
  1438. hdiffpatch/_c_src/zlib/contrib/minizip/minizip.pc.in +12 -0
  1439. hdiffpatch/_c_src/zlib/contrib/minizip/mztools.c +285 -0
  1440. hdiffpatch/_c_src/zlib/contrib/minizip/mztools.h +37 -0
  1441. hdiffpatch/_c_src/zlib/contrib/minizip/unzip.c +1985 -0
  1442. hdiffpatch/_c_src/zlib/contrib/minizip/unzip.h +437 -0
  1443. hdiffpatch/_c_src/zlib/contrib/minizip/zip.c +1956 -0
  1444. hdiffpatch/_c_src/zlib/contrib/minizip/zip.h +364 -0
  1445. hdiffpatch/_c_src/zlib/contrib/nuget/nuget.csproj +43 -0
  1446. hdiffpatch/_c_src/zlib/contrib/nuget/nuget.sln +22 -0
  1447. hdiffpatch/_c_src/zlib/contrib/pascal/example.pas +599 -0
  1448. hdiffpatch/_c_src/zlib/contrib/pascal/readme.txt +76 -0
  1449. hdiffpatch/_c_src/zlib/contrib/pascal/zlibd32.mak +99 -0
  1450. hdiffpatch/_c_src/zlib/contrib/pascal/zlibpas.pas +276 -0
  1451. hdiffpatch/_c_src/zlib/contrib/puff/Makefile +42 -0
  1452. hdiffpatch/_c_src/zlib/contrib/puff/README +63 -0
  1453. hdiffpatch/_c_src/zlib/contrib/puff/puff.c +840 -0
  1454. hdiffpatch/_c_src/zlib/contrib/puff/puff.h +35 -0
  1455. hdiffpatch/_c_src/zlib/contrib/puff/pufftest.c +165 -0
  1456. hdiffpatch/_c_src/zlib/contrib/puff/zeros.raw +0 -0
  1457. hdiffpatch/_c_src/zlib/contrib/testzlib/testzlib.c +275 -0
  1458. hdiffpatch/_c_src/zlib/contrib/testzlib/testzlib.txt +10 -0
  1459. hdiffpatch/_c_src/zlib/contrib/untgz/Makefile +14 -0
  1460. hdiffpatch/_c_src/zlib/contrib/untgz/Makefile.msc +17 -0
  1461. hdiffpatch/_c_src/zlib/contrib/untgz/untgz.c +667 -0
  1462. hdiffpatch/_c_src/zlib/contrib/vstudio/readme.txt +81 -0
  1463. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/miniunz.vcxproj +310 -0
  1464. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters +22 -0
  1465. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/minizip.vcxproj +307 -0
  1466. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters +22 -0
  1467. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/testzlib.vcxproj +412 -0
  1468. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters +55 -0
  1469. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj +310 -0
  1470. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters +22 -0
  1471. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlib.rc +32 -0
  1472. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlibstat.vcxproj +449 -0
  1473. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters +74 -0
  1474. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlibvc.def +158 -0
  1475. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlibvc.sln +135 -0
  1476. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlibvc.vcxproj +633 -0
  1477. hdiffpatch/_c_src/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters +115 -0
  1478. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/miniunz.vcxproj +314 -0
  1479. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/minizip.vcxproj +311 -0
  1480. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/testzlib.vcxproj +418 -0
  1481. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj +314 -0
  1482. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/zlib.rc +32 -0
  1483. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/zlibstat.vcxproj +456 -0
  1484. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/zlibvc.def +158 -0
  1485. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/zlibvc.sln +117 -0
  1486. hdiffpatch/_c_src/zlib/contrib/vstudio/vc11/zlibvc.vcxproj +664 -0
  1487. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/miniunz.vcxproj +316 -0
  1488. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/minizip.vcxproj +313 -0
  1489. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/testzlib.vcxproj +422 -0
  1490. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/testzlibdll.vcxproj +316 -0
  1491. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/zlib.rc +32 -0
  1492. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/zlibstat.vcxproj +459 -0
  1493. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/zlibvc.def +158 -0
  1494. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/zlibvc.sln +119 -0
  1495. hdiffpatch/_c_src/zlib/contrib/vstudio/vc12/zlibvc.vcxproj +668 -0
  1496. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/miniunz.vcxproj +316 -0
  1497. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/minizip.vcxproj +313 -0
  1498. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/testzlib.vcxproj +422 -0
  1499. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/testzlibdll.vcxproj +316 -0
  1500. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/zlib.rc +32 -0
  1501. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/zlibstat.vcxproj +459 -0
  1502. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/zlibvc.def +158 -0
  1503. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/zlibvc.sln +119 -0
  1504. hdiffpatch/_c_src/zlib/contrib/vstudio/vc14/zlibvc.vcxproj +668 -0
  1505. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/miniunz.vcxproj +409 -0
  1506. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/minizip.vcxproj +405 -0
  1507. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/testzlib.vcxproj +473 -0
  1508. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj +409 -0
  1509. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/zlib.rc +32 -0
  1510. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/zlibstat.vcxproj +602 -0
  1511. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/zlibvc.def +158 -0
  1512. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/zlibvc.sln +179 -0
  1513. hdiffpatch/_c_src/zlib/contrib/vstudio/vc17/zlibvc.vcxproj +875 -0
  1514. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/miniunz.vcproj +565 -0
  1515. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/minizip.vcproj +562 -0
  1516. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/testzlib.vcproj +796 -0
  1517. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/testzlibdll.vcproj +565 -0
  1518. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/zlib.rc +32 -0
  1519. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/zlibstat.vcproj +781 -0
  1520. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/zlibvc.def +158 -0
  1521. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/zlibvc.sln +144 -0
  1522. hdiffpatch/_c_src/zlib/contrib/vstudio/vc9/zlibvc.vcproj +1100 -0
  1523. hdiffpatch/_c_src/zlib/crc32.c +1049 -0
  1524. hdiffpatch/_c_src/zlib/crc32.h +9446 -0
  1525. hdiffpatch/_c_src/zlib/deflate.c +2159 -0
  1526. hdiffpatch/_c_src/zlib/deflate.h +377 -0
  1527. hdiffpatch/_c_src/zlib/doc/algorithm.txt +209 -0
  1528. hdiffpatch/_c_src/zlib/doc/crc-doc.1.0.pdf +0 -0
  1529. hdiffpatch/_c_src/zlib/doc/rfc1950.txt +619 -0
  1530. hdiffpatch/_c_src/zlib/doc/rfc1951.txt +955 -0
  1531. hdiffpatch/_c_src/zlib/doc/rfc1952.txt +675 -0
  1532. hdiffpatch/_c_src/zlib/doc/txtvsbin.txt +107 -0
  1533. hdiffpatch/_c_src/zlib/examples/README.examples +54 -0
  1534. hdiffpatch/_c_src/zlib/examples/enough.c +597 -0
  1535. hdiffpatch/_c_src/zlib/examples/fitblk.c +233 -0
  1536. hdiffpatch/_c_src/zlib/examples/gun.c +702 -0
  1537. hdiffpatch/_c_src/zlib/examples/gzappend.c +504 -0
  1538. hdiffpatch/_c_src/zlib/examples/gzjoin.c +449 -0
  1539. hdiffpatch/_c_src/zlib/examples/gzlog.c +1061 -0
  1540. hdiffpatch/_c_src/zlib/examples/gzlog.h +91 -0
  1541. hdiffpatch/_c_src/zlib/examples/gznorm.c +470 -0
  1542. hdiffpatch/_c_src/zlib/examples/zlib_how.html +549 -0
  1543. hdiffpatch/_c_src/zlib/examples/zpipe.c +205 -0
  1544. hdiffpatch/_c_src/zlib/examples/zran.c +533 -0
  1545. hdiffpatch/_c_src/zlib/examples/zran.h +51 -0
  1546. hdiffpatch/_c_src/zlib/gzclose.c +23 -0
  1547. hdiffpatch/_c_src/zlib/gzguts.h +214 -0
  1548. hdiffpatch/_c_src/zlib/gzlib.c +582 -0
  1549. hdiffpatch/_c_src/zlib/gzread.c +602 -0
  1550. hdiffpatch/_c_src/zlib/gzwrite.c +631 -0
  1551. hdiffpatch/_c_src/zlib/infback.c +628 -0
  1552. hdiffpatch/_c_src/zlib/inffast.c +320 -0
  1553. hdiffpatch/_c_src/zlib/inffast.h +11 -0
  1554. hdiffpatch/_c_src/zlib/inffixed.h +94 -0
  1555. hdiffpatch/_c_src/zlib/inflate.c +1546 -0
  1556. hdiffpatch/_c_src/zlib/inflate.h +126 -0
  1557. hdiffpatch/_c_src/zlib/inftrees.c +299 -0
  1558. hdiffpatch/_c_src/zlib/inftrees.h +62 -0
  1559. hdiffpatch/_c_src/zlib/make_vms.com +867 -0
  1560. hdiffpatch/_c_src/zlib/msdos/Makefile.bor +115 -0
  1561. hdiffpatch/_c_src/zlib/msdos/Makefile.dj2 +104 -0
  1562. hdiffpatch/_c_src/zlib/msdos/Makefile.emx +69 -0
  1563. hdiffpatch/_c_src/zlib/msdos/Makefile.msc +112 -0
  1564. hdiffpatch/_c_src/zlib/msdos/Makefile.tc +100 -0
  1565. hdiffpatch/_c_src/zlib/nintendods/Makefile +126 -0
  1566. hdiffpatch/_c_src/zlib/nintendods/README +5 -0
  1567. hdiffpatch/_c_src/zlib/old/Makefile.emx +69 -0
  1568. hdiffpatch/_c_src/zlib/old/Makefile.riscos +151 -0
  1569. hdiffpatch/_c_src/zlib/old/README +3 -0
  1570. hdiffpatch/_c_src/zlib/old/descrip.mms +48 -0
  1571. hdiffpatch/_c_src/zlib/old/os2/Makefile.os2 +136 -0
  1572. hdiffpatch/_c_src/zlib/old/os2/zlib.def +51 -0
  1573. hdiffpatch/_c_src/zlib/old/visual-basic.txt +160 -0
  1574. hdiffpatch/_c_src/zlib/os400/README400 +48 -0
  1575. hdiffpatch/_c_src/zlib/os400/bndsrc +127 -0
  1576. hdiffpatch/_c_src/zlib/os400/make.sh +366 -0
  1577. hdiffpatch/_c_src/zlib/os400/zlib.inc +527 -0
  1578. hdiffpatch/_c_src/zlib/qnx/package.qpg +141 -0
  1579. hdiffpatch/_c_src/zlib/test/example.c +546 -0
  1580. hdiffpatch/_c_src/zlib/test/infcover.c +672 -0
  1581. hdiffpatch/_c_src/zlib/test/minigzip.c +579 -0
  1582. hdiffpatch/_c_src/zlib/treebuild.xml +116 -0
  1583. hdiffpatch/_c_src/zlib/trees.c +1117 -0
  1584. hdiffpatch/_c_src/zlib/trees.h +128 -0
  1585. hdiffpatch/_c_src/zlib/uncompr.c +85 -0
  1586. hdiffpatch/_c_src/zlib/watcom/watcom_f.mak +43 -0
  1587. hdiffpatch/_c_src/zlib/watcom/watcom_l.mak +43 -0
  1588. hdiffpatch/_c_src/zlib/win32/DLL_FAQ.txt +381 -0
  1589. hdiffpatch/_c_src/zlib/win32/Makefile.bor +109 -0
  1590. hdiffpatch/_c_src/zlib/win32/Makefile.gcc +177 -0
  1591. hdiffpatch/_c_src/zlib/win32/Makefile.msc +159 -0
  1592. hdiffpatch/_c_src/zlib/win32/README-WIN32.txt +103 -0
  1593. hdiffpatch/_c_src/zlib/win32/VisualC.txt +3 -0
  1594. hdiffpatch/_c_src/zlib/win32/zlib.def +97 -0
  1595. hdiffpatch/_c_src/zlib/win32/zlib1.rc +40 -0
  1596. hdiffpatch/_c_src/zlib/zconf.h +543 -0
  1597. hdiffpatch/_c_src/zlib/zconf.h.cmakein +545 -0
  1598. hdiffpatch/_c_src/zlib/zconf.h.in +543 -0
  1599. hdiffpatch/_c_src/zlib/zlib.3 +149 -0
  1600. hdiffpatch/_c_src/zlib/zlib.3.pdf +0 -0
  1601. hdiffpatch/_c_src/zlib/zlib.h +1945 -0
  1602. hdiffpatch/_c_src/zlib/zlib.map +100 -0
  1603. hdiffpatch/_c_src/zlib/zlib.pc.cmakein +13 -0
  1604. hdiffpatch/_c_src/zlib/zlib.pc.in +13 -0
  1605. hdiffpatch/_c_src/zlib/zutil.c +299 -0
  1606. hdiffpatch/_c_src/zlib/zutil.h +254 -0
  1607. hdiffpatch/_c_src/zstd/.buckconfig +9 -0
  1608. hdiffpatch/_c_src/zstd/.buckversion +1 -0
  1609. hdiffpatch/_c_src/zstd/.cirrus.yml +9 -0
  1610. hdiffpatch/_c_src/zstd/.git +1 -0
  1611. hdiffpatch/_c_src/zstd/.gitattributes +21 -0
  1612. hdiffpatch/_c_src/zstd/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  1613. hdiffpatch/_c_src/zstd/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  1614. hdiffpatch/_c_src/zstd/.github/dependabot.yml +6 -0
  1615. hdiffpatch/_c_src/zstd/.github/workflows/android-ndk-build.yml +39 -0
  1616. hdiffpatch/_c_src/zstd/.github/workflows/commit.yml +104 -0
  1617. hdiffpatch/_c_src/zstd/.github/workflows/dev-long-tests.yml +313 -0
  1618. hdiffpatch/_c_src/zstd/.github/workflows/dev-short-tests.yml +725 -0
  1619. hdiffpatch/_c_src/zstd/.github/workflows/nightly.yml +38 -0
  1620. hdiffpatch/_c_src/zstd/.github/workflows/publish-release-artifacts.yml +73 -0
  1621. hdiffpatch/_c_src/zstd/.github/workflows/scorecards.yml +64 -0
  1622. hdiffpatch/_c_src/zstd/.github/workflows/windows-artifacts.yml +58 -0
  1623. hdiffpatch/_c_src/zstd/.gitignore +63 -0
  1624. hdiffpatch/_c_src/zstd/CHANGELOG +863 -0
  1625. hdiffpatch/_c_src/zstd/CODE_OF_CONDUCT.md +5 -0
  1626. hdiffpatch/_c_src/zstd/CONTRIBUTING.md +489 -0
  1627. hdiffpatch/_c_src/zstd/COPYING +339 -0
  1628. hdiffpatch/_c_src/zstd/LICENSE +30 -0
  1629. hdiffpatch/_c_src/zstd/Makefile +471 -0
  1630. hdiffpatch/_c_src/zstd/Package.swift +36 -0
  1631. hdiffpatch/_c_src/zstd/README.md +237 -0
  1632. hdiffpatch/_c_src/zstd/SECURITY.md +15 -0
  1633. hdiffpatch/_c_src/zstd/TESTING.md +43 -0
  1634. hdiffpatch/_c_src/zstd/build/.gitignore +33 -0
  1635. hdiffpatch/_c_src/zstd/build/LICENSE +0 -0
  1636. hdiffpatch/_c_src/zstd/build/README.md +56 -0
  1637. hdiffpatch/_c_src/zstd/build/VS2008/fullbench/fullbench.vcproj +549 -0
  1638. hdiffpatch/_c_src/zstd/build/VS2008/fuzzer/fuzzer.vcproj +585 -0
  1639. hdiffpatch/_c_src/zstd/build/VS2008/zstd/zstd.vcproj +677 -0
  1640. hdiffpatch/_c_src/zstd/build/VS2008/zstd.sln +56 -0
  1641. hdiffpatch/_c_src/zstd/build/VS2008/zstdlib/zstdlib.vcproj +635 -0
  1642. hdiffpatch/_c_src/zstd/build/VS2010/CompileAsCpp.props +8 -0
  1643. hdiffpatch/_c_src/zstd/build/VS2010/datagen/datagen.vcxproj +170 -0
  1644. hdiffpatch/_c_src/zstd/build/VS2010/fullbench/fullbench.vcxproj +220 -0
  1645. hdiffpatch/_c_src/zstd/build/VS2010/fuzzer/fuzzer.vcxproj +224 -0
  1646. hdiffpatch/_c_src/zstd/build/VS2010/libzstd/libzstd.vcxproj +243 -0
  1647. hdiffpatch/_c_src/zstd/build/VS2010/libzstd-dll/libzstd-dll.rc +51 -0
  1648. hdiffpatch/_c_src/zstd/build/VS2010/libzstd-dll/libzstd-dll.vcxproj +250 -0
  1649. hdiffpatch/_c_src/zstd/build/VS2010/zstd/zstd.rc +51 -0
  1650. hdiffpatch/_c_src/zstd/build/VS2010/zstd/zstd.vcxproj +266 -0
  1651. hdiffpatch/_c_src/zstd/build/VS2010/zstd.sln +84 -0
  1652. hdiffpatch/_c_src/zstd/build/VS_scripts/README.md +64 -0
  1653. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2010.cmd +7 -0
  1654. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2012.cmd +6 -0
  1655. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2013.cmd +7 -0
  1656. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2015.cmd +7 -0
  1657. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2017.cmd +7 -0
  1658. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2017Community.cmd +7 -0
  1659. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2017Enterprise.cmd +7 -0
  1660. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VS2017Professional.cmd +7 -0
  1661. hdiffpatch/_c_src/zstd/build/VS_scripts/build.VSPreview.cmd +7 -0
  1662. hdiffpatch/_c_src/zstd/build/VS_scripts/build.generic.cmd +67 -0
  1663. hdiffpatch/_c_src/zstd/build/cmake/.gitignore +10 -0
  1664. hdiffpatch/_c_src/zstd/build/cmake/CMakeLists.txt +228 -0
  1665. hdiffpatch/_c_src/zstd/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +136 -0
  1666. hdiffpatch/_c_src/zstd/build/cmake/CMakeModules/FindLibLZ4.cmake +49 -0
  1667. hdiffpatch/_c_src/zstd/build/cmake/CMakeModules/GetZstdLibraryVersion.cmake +10 -0
  1668. hdiffpatch/_c_src/zstd/build/cmake/CMakeModules/JoinPaths.cmake +23 -0
  1669. hdiffpatch/_c_src/zstd/build/cmake/README.md +146 -0
  1670. hdiffpatch/_c_src/zstd/build/cmake/contrib/CMakeLists.txt +13 -0
  1671. hdiffpatch/_c_src/zstd/build/cmake/contrib/gen_html/CMakeLists.txt +30 -0
  1672. hdiffpatch/_c_src/zstd/build/cmake/contrib/pzstd/CMakeLists.txt +39 -0
  1673. hdiffpatch/_c_src/zstd/build/cmake/lib/.gitignore +2 -0
  1674. hdiffpatch/_c_src/zstd/build/cmake/lib/CMakeLists.txt +295 -0
  1675. hdiffpatch/_c_src/zstd/build/cmake/lib/cmake_uninstall.cmake.in +22 -0
  1676. hdiffpatch/_c_src/zstd/build/cmake/programs/.gitignore +5 -0
  1677. hdiffpatch/_c_src/zstd/build/cmake/programs/CMakeLists.txt +144 -0
  1678. hdiffpatch/_c_src/zstd/build/cmake/tests/.gitignore +6 -0
  1679. hdiffpatch/_c_src/zstd/build/cmake/tests/CMakeLists.txt +118 -0
  1680. hdiffpatch/_c_src/zstd/build/cmake/zstdConfig.cmake.in +10 -0
  1681. hdiffpatch/_c_src/zstd/build/meson/GetZstdLibraryVersion.py +39 -0
  1682. hdiffpatch/_c_src/zstd/build/meson/InstallSymlink.py +55 -0
  1683. hdiffpatch/_c_src/zstd/build/meson/README.md +38 -0
  1684. hdiffpatch/_c_src/zstd/build/meson/contrib/gen_html/meson.build +30 -0
  1685. hdiffpatch/_c_src/zstd/build/meson/contrib/meson.build +12 -0
  1686. hdiffpatch/_c_src/zstd/build/meson/contrib/pzstd/meson.build +25 -0
  1687. hdiffpatch/_c_src/zstd/build/meson/lib/meson.build +171 -0
  1688. hdiffpatch/_c_src/zstd/build/meson/meson.build +156 -0
  1689. hdiffpatch/_c_src/zstd/build/meson/meson_options.txt +36 -0
  1690. hdiffpatch/_c_src/zstd/build/meson/programs/meson.build +124 -0
  1691. hdiffpatch/_c_src/zstd/build/meson/tests/meson.build +217 -0
  1692. hdiffpatch/_c_src/zstd/build/meson/tests/valgrindTest.py +90 -0
  1693. hdiffpatch/_c_src/zstd/build/single_file_libs/.gitignore +10 -0
  1694. hdiffpatch/_c_src/zstd/build/single_file_libs/README.md +33 -0
  1695. hdiffpatch/_c_src/zstd/build/single_file_libs/build_decoder_test.sh +91 -0
  1696. hdiffpatch/_c_src/zstd/build/single_file_libs/build_library_test.sh +98 -0
  1697. hdiffpatch/_c_src/zstd/build/single_file_libs/combine.py +234 -0
  1698. hdiffpatch/_c_src/zstd/build/single_file_libs/combine.sh +249 -0
  1699. hdiffpatch/_c_src/zstd/build/single_file_libs/create_single_file_decoder.sh +19 -0
  1700. hdiffpatch/_c_src/zstd/build/single_file_libs/create_single_file_library.sh +19 -0
  1701. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/README.md +11 -0
  1702. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/emscripten.c +340 -0
  1703. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/roundtrip.c +83 -0
  1704. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/shell.html +31 -0
  1705. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/simple.c +75 -0
  1706. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/testcard-dxt1.inl +2731 -0
  1707. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/testcard-zstd.inl +261 -0
  1708. hdiffpatch/_c_src/zstd/build/single_file_libs/examples/testcard.png +0 -0
  1709. hdiffpatch/_c_src/zstd/build/single_file_libs/zstd-in.c +91 -0
  1710. hdiffpatch/_c_src/zstd/build/single_file_libs/zstddeclib-in.c +62 -0
  1711. hdiffpatch/_c_src/zstd/contrib/VS2005/README.md +3 -0
  1712. hdiffpatch/_c_src/zstd/contrib/VS2005/fullbench/fullbench.vcproj +440 -0
  1713. hdiffpatch/_c_src/zstd/contrib/VS2005/fuzzer/fuzzer.vcproj +488 -0
  1714. hdiffpatch/_c_src/zstd/contrib/VS2005/zstd/zstd.vcproj +552 -0
  1715. hdiffpatch/_c_src/zstd/contrib/VS2005/zstd.sln +55 -0
  1716. hdiffpatch/_c_src/zstd/contrib/VS2005/zstdlib/zstdlib.vcproj +546 -0
  1717. hdiffpatch/_c_src/zstd/contrib/cleanTabs +2 -0
  1718. hdiffpatch/_c_src/zstd/contrib/diagnose_corruption/.gitignore +1 -0
  1719. hdiffpatch/_c_src/zstd/contrib/diagnose_corruption/Makefile +35 -0
  1720. hdiffpatch/_c_src/zstd/contrib/diagnose_corruption/check_flipped_bits.c +400 -0
  1721. hdiffpatch/_c_src/zstd/contrib/docker/Dockerfile +20 -0
  1722. hdiffpatch/_c_src/zstd/contrib/docker/README.md +20 -0
  1723. hdiffpatch/_c_src/zstd/contrib/externalSequenceProducer/.gitignore +2 -0
  1724. hdiffpatch/_c_src/zstd/contrib/externalSequenceProducer/Makefile +40 -0
  1725. hdiffpatch/_c_src/zstd/contrib/externalSequenceProducer/README.md +14 -0
  1726. hdiffpatch/_c_src/zstd/contrib/externalSequenceProducer/main.c +107 -0
  1727. hdiffpatch/_c_src/zstd/contrib/externalSequenceProducer/sequence_producer.c +80 -0
  1728. hdiffpatch/_c_src/zstd/contrib/externalSequenceProducer/sequence_producer.h +26 -0
  1729. hdiffpatch/_c_src/zstd/contrib/freestanding_lib/freestanding.py +774 -0
  1730. hdiffpatch/_c_src/zstd/contrib/gen_html/.gitignore +3 -0
  1731. hdiffpatch/_c_src/zstd/contrib/gen_html/Makefile +51 -0
  1732. hdiffpatch/_c_src/zstd/contrib/gen_html/README.md +31 -0
  1733. hdiffpatch/_c_src/zstd/contrib/gen_html/gen-zstd-manual.sh +9 -0
  1734. hdiffpatch/_c_src/zstd/contrib/gen_html/gen_html.cpp +225 -0
  1735. hdiffpatch/_c_src/zstd/contrib/largeNbDicts/.gitignore +2 -0
  1736. hdiffpatch/_c_src/zstd/contrib/largeNbDicts/Makefile +58 -0
  1737. hdiffpatch/_c_src/zstd/contrib/largeNbDicts/README.md +33 -0
  1738. hdiffpatch/_c_src/zstd/contrib/largeNbDicts/largeNbDicts.c +1085 -0
  1739. hdiffpatch/_c_src/zstd/contrib/linux-kernel/.gitignore +4 -0
  1740. hdiffpatch/_c_src/zstd/contrib/linux-kernel/Makefile +108 -0
  1741. hdiffpatch/_c_src/zstd/contrib/linux-kernel/README.md +14 -0
  1742. hdiffpatch/_c_src/zstd/contrib/linux-kernel/btrfs-benchmark.sh +104 -0
  1743. hdiffpatch/_c_src/zstd/contrib/linux-kernel/btrfs-extract-benchmark.sh +99 -0
  1744. hdiffpatch/_c_src/zstd/contrib/linux-kernel/decompress_sources.h +34 -0
  1745. hdiffpatch/_c_src/zstd/contrib/linux-kernel/linux.mk +44 -0
  1746. hdiffpatch/_c_src/zstd/contrib/linux-kernel/linux_zstd.h +525 -0
  1747. hdiffpatch/_c_src/zstd/contrib/linux-kernel/mem.h +262 -0
  1748. hdiffpatch/_c_src/zstd/contrib/linux-kernel/squashfs-benchmark.sh +39 -0
  1749. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/Makefile +49 -0
  1750. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/compiler.h +23 -0
  1751. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/errno.h +15 -0
  1752. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/kernel.h +19 -0
  1753. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/limits.h +15 -0
  1754. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/math64.h +15 -0
  1755. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/module.h +20 -0
  1756. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/printk.h +15 -0
  1757. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/stddef.h +15 -0
  1758. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/swab.h +16 -0
  1759. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/types.h +16 -0
  1760. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/unaligned.h +187 -0
  1761. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/include/linux/xxhash.h +745 -0
  1762. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/macro-test.sh +44 -0
  1763. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/static_test.c +52 -0
  1764. hdiffpatch/_c_src/zstd/contrib/linux-kernel/test/test.c +229 -0
  1765. hdiffpatch/_c_src/zstd/contrib/linux-kernel/zstd_common_module.c +29 -0
  1766. hdiffpatch/_c_src/zstd/contrib/linux-kernel/zstd_compress_module.c +237 -0
  1767. hdiffpatch/_c_src/zstd/contrib/linux-kernel/zstd_decompress_module.c +105 -0
  1768. hdiffpatch/_c_src/zstd/contrib/linux-kernel/zstd_deps.h +121 -0
  1769. hdiffpatch/_c_src/zstd/contrib/match_finders/README.md +42 -0
  1770. hdiffpatch/_c_src/zstd/contrib/match_finders/zstd_edist.c +558 -0
  1771. hdiffpatch/_c_src/zstd/contrib/match_finders/zstd_edist.h +70 -0
  1772. hdiffpatch/_c_src/zstd/contrib/premake/premake4.lua +6 -0
  1773. hdiffpatch/_c_src/zstd/contrib/premake/zstd.lua +80 -0
  1774. hdiffpatch/_c_src/zstd/contrib/pzstd/.gitignore +2 -0
  1775. hdiffpatch/_c_src/zstd/contrib/pzstd/BUCK +72 -0
  1776. hdiffpatch/_c_src/zstd/contrib/pzstd/ErrorHolder.h +54 -0
  1777. hdiffpatch/_c_src/zstd/contrib/pzstd/Logging.h +72 -0
  1778. hdiffpatch/_c_src/zstd/contrib/pzstd/Makefile +265 -0
  1779. hdiffpatch/_c_src/zstd/contrib/pzstd/Options.cpp +424 -0
  1780. hdiffpatch/_c_src/zstd/contrib/pzstd/Options.h +71 -0
  1781. hdiffpatch/_c_src/zstd/contrib/pzstd/Pzstd.cpp +626 -0
  1782. hdiffpatch/_c_src/zstd/contrib/pzstd/Pzstd.h +153 -0
  1783. hdiffpatch/_c_src/zstd/contrib/pzstd/README.md +56 -0
  1784. hdiffpatch/_c_src/zstd/contrib/pzstd/SkippableFrame.cpp +30 -0
  1785. hdiffpatch/_c_src/zstd/contrib/pzstd/SkippableFrame.h +64 -0
  1786. hdiffpatch/_c_src/zstd/contrib/pzstd/images/Cspeed.png +0 -0
  1787. hdiffpatch/_c_src/zstd/contrib/pzstd/images/Dspeed.png +0 -0
  1788. hdiffpatch/_c_src/zstd/contrib/pzstd/main.cpp +27 -0
  1789. hdiffpatch/_c_src/zstd/contrib/pzstd/test/BUCK +37 -0
  1790. hdiffpatch/_c_src/zstd/contrib/pzstd/test/OptionsTest.cpp +536 -0
  1791. hdiffpatch/_c_src/zstd/contrib/pzstd/test/PzstdTest.cpp +147 -0
  1792. hdiffpatch/_c_src/zstd/contrib/pzstd/test/RoundTrip.h +86 -0
  1793. hdiffpatch/_c_src/zstd/contrib/pzstd/test/RoundTripTest.cpp +84 -0
  1794. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/BUCK +75 -0
  1795. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/Buffer.h +99 -0
  1796. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/FileSystem.h +96 -0
  1797. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/Likely.h +28 -0
  1798. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/Portability.h +16 -0
  1799. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/Range.h +133 -0
  1800. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/ResourcePool.h +96 -0
  1801. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/ScopeGuard.h +50 -0
  1802. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/ThreadPool.h +58 -0
  1803. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/WorkQueue.h +182 -0
  1804. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/BUCK +35 -0
  1805. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/BufferTest.cpp +89 -0
  1806. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/RangeTest.cpp +82 -0
  1807. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/ResourcePoolTest.cpp +72 -0
  1808. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/ScopeGuardTest.cpp +28 -0
  1809. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/ThreadPoolTest.cpp +71 -0
  1810. hdiffpatch/_c_src/zstd/contrib/pzstd/utils/test/WorkQueueTest.cpp +282 -0
  1811. hdiffpatch/_c_src/zstd/contrib/recovery/Makefile +35 -0
  1812. hdiffpatch/_c_src/zstd/contrib/recovery/recover_directory.c +152 -0
  1813. hdiffpatch/_c_src/zstd/contrib/seekable_format/README.md +42 -0
  1814. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/.gitignore +5 -0
  1815. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/Makefile +53 -0
  1816. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/parallel_compression.c +214 -0
  1817. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/parallel_processing.c +194 -0
  1818. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/seekable_compression.c +136 -0
  1819. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/seekable_decompression.c +141 -0
  1820. hdiffpatch/_c_src/zstd/contrib/seekable_format/examples/seekable_decompression_mem.c +147 -0
  1821. hdiffpatch/_c_src/zstd/contrib/seekable_format/tests/.gitignore +1 -0
  1822. hdiffpatch/_c_src/zstd/contrib/seekable_format/tests/Makefile +38 -0
  1823. hdiffpatch/_c_src/zstd/contrib/seekable_format/tests/seekable_tests.c +363 -0
  1824. hdiffpatch/_c_src/zstd/contrib/seekable_format/zstd_seekable.h +226 -0
  1825. hdiffpatch/_c_src/zstd/contrib/seekable_format/zstd_seekable_compression_format.md +116 -0
  1826. hdiffpatch/_c_src/zstd/contrib/seekable_format/zstdseek_compress.c +365 -0
  1827. hdiffpatch/_c_src/zstd/contrib/seekable_format/zstdseek_decompress.c +600 -0
  1828. hdiffpatch/_c_src/zstd/contrib/seqBench/Makefile +58 -0
  1829. hdiffpatch/_c_src/zstd/contrib/seqBench/seqBench.c +53 -0
  1830. hdiffpatch/_c_src/zstd/contrib/snap/snapcraft.yaml +28 -0
  1831. hdiffpatch/_c_src/zstd/doc/README.md +26 -0
  1832. hdiffpatch/_c_src/zstd/doc/decompressor_errata.md +148 -0
  1833. hdiffpatch/_c_src/zstd/doc/decompressor_permissive.md +80 -0
  1834. hdiffpatch/_c_src/zstd/doc/educational_decoder/.gitignore +2 -0
  1835. hdiffpatch/_c_src/zstd/doc/educational_decoder/Makefile +62 -0
  1836. hdiffpatch/_c_src/zstd/doc/educational_decoder/README.md +36 -0
  1837. hdiffpatch/_c_src/zstd/doc/educational_decoder/harness.c +119 -0
  1838. hdiffpatch/_c_src/zstd/doc/educational_decoder/zstd_decompress.c +2323 -0
  1839. hdiffpatch/_c_src/zstd/doc/educational_decoder/zstd_decompress.h +61 -0
  1840. hdiffpatch/_c_src/zstd/doc/images/CSpeed2.png +0 -0
  1841. hdiffpatch/_c_src/zstd/doc/images/DCspeed5.png +0 -0
  1842. hdiffpatch/_c_src/zstd/doc/images/DSpeed3.png +0 -0
  1843. hdiffpatch/_c_src/zstd/doc/images/cdict_v136.png +0 -0
  1844. hdiffpatch/_c_src/zstd/doc/images/dict-cr.png +0 -0
  1845. hdiffpatch/_c_src/zstd/doc/images/dict-cs.png +0 -0
  1846. hdiffpatch/_c_src/zstd/doc/images/dict-ds.png +0 -0
  1847. hdiffpatch/_c_src/zstd/doc/images/zstd_cdict_v1_3_5.png +0 -0
  1848. hdiffpatch/_c_src/zstd/doc/images/zstd_logo86.png +0 -0
  1849. hdiffpatch/_c_src/zstd/doc/zstd_compression_format.md +1771 -0
  1850. hdiffpatch/_c_src/zstd/doc/zstd_manual.html +2237 -0
  1851. hdiffpatch/_c_src/zstd/examples/.gitignore +15 -0
  1852. hdiffpatch/_c_src/zstd/examples/Makefile +93 -0
  1853. hdiffpatch/_c_src/zstd/examples/README.md +46 -0
  1854. hdiffpatch/_c_src/zstd/examples/common.h +246 -0
  1855. hdiffpatch/_c_src/zstd/examples/dictionary_compression.c +107 -0
  1856. hdiffpatch/_c_src/zstd/examples/dictionary_decompression.c +99 -0
  1857. hdiffpatch/_c_src/zstd/examples/multiple_simple_compression.c +116 -0
  1858. hdiffpatch/_c_src/zstd/examples/multiple_streaming_compression.c +133 -0
  1859. hdiffpatch/_c_src/zstd/examples/simple_compression.c +68 -0
  1860. hdiffpatch/_c_src/zstd/examples/simple_decompression.c +65 -0
  1861. hdiffpatch/_c_src/zstd/examples/streaming_compression.c +146 -0
  1862. hdiffpatch/_c_src/zstd/examples/streaming_compression_thread_pool.c +180 -0
  1863. hdiffpatch/_c_src/zstd/examples/streaming_decompression.c +100 -0
  1864. hdiffpatch/_c_src/zstd/examples/streaming_memory_usage.c +137 -0
  1865. hdiffpatch/_c_src/zstd/lib/.gitignore +3 -0
  1866. hdiffpatch/_c_src/zstd/lib/BUCK +232 -0
  1867. hdiffpatch/_c_src/zstd/lib/Makefile +389 -0
  1868. hdiffpatch/_c_src/zstd/lib/README.md +248 -0
  1869. hdiffpatch/_c_src/zstd/lib/common/allocations.h +55 -0
  1870. hdiffpatch/_c_src/zstd/lib/common/bits.h +205 -0
  1871. hdiffpatch/_c_src/zstd/lib/common/bitstream.h +454 -0
  1872. hdiffpatch/_c_src/zstd/lib/common/compiler.h +464 -0
  1873. hdiffpatch/_c_src/zstd/lib/common/cpu.h +249 -0
  1874. hdiffpatch/_c_src/zstd/lib/common/debug.c +30 -0
  1875. hdiffpatch/_c_src/zstd/lib/common/debug.h +107 -0
  1876. hdiffpatch/_c_src/zstd/lib/common/entropy_common.c +340 -0
  1877. hdiffpatch/_c_src/zstd/lib/common/error_private.c +64 -0
  1878. hdiffpatch/_c_src/zstd/lib/common/error_private.h +158 -0
  1879. hdiffpatch/_c_src/zstd/lib/common/fse.h +625 -0
  1880. hdiffpatch/_c_src/zstd/lib/common/fse_decompress.c +315 -0
  1881. hdiffpatch/_c_src/zstd/lib/common/huf.h +277 -0
  1882. hdiffpatch/_c_src/zstd/lib/common/mem.h +422 -0
  1883. hdiffpatch/_c_src/zstd/lib/common/pool.c +371 -0
  1884. hdiffpatch/_c_src/zstd/lib/common/pool.h +81 -0
  1885. hdiffpatch/_c_src/zstd/lib/common/portability_macros.h +171 -0
  1886. hdiffpatch/_c_src/zstd/lib/common/threading.c +182 -0
  1887. hdiffpatch/_c_src/zstd/lib/common/threading.h +142 -0
  1888. hdiffpatch/_c_src/zstd/lib/common/xxhash.c +18 -0
  1889. hdiffpatch/_c_src/zstd/lib/common/xxhash.h +7094 -0
  1890. hdiffpatch/_c_src/zstd/lib/common/zstd_common.c +48 -0
  1891. hdiffpatch/_c_src/zstd/lib/common/zstd_deps.h +123 -0
  1892. hdiffpatch/_c_src/zstd/lib/common/zstd_internal.h +324 -0
  1893. hdiffpatch/_c_src/zstd/lib/common/zstd_trace.h +156 -0
  1894. hdiffpatch/_c_src/zstd/lib/compress/clevels.h +134 -0
  1895. hdiffpatch/_c_src/zstd/lib/compress/fse_compress.c +625 -0
  1896. hdiffpatch/_c_src/zstd/lib/compress/hist.c +191 -0
  1897. hdiffpatch/_c_src/zstd/lib/compress/hist.h +82 -0
  1898. hdiffpatch/_c_src/zstd/lib/compress/huf_compress.c +1464 -0
  1899. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress.c +7942 -0
  1900. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_internal.h +1640 -0
  1901. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_literals.c +235 -0
  1902. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_literals.h +39 -0
  1903. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_sequences.c +442 -0
  1904. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_sequences.h +55 -0
  1905. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_superblock.c +688 -0
  1906. hdiffpatch/_c_src/zstd/lib/compress/zstd_compress_superblock.h +32 -0
  1907. hdiffpatch/_c_src/zstd/lib/compress/zstd_cwksp.h +765 -0
  1908. hdiffpatch/_c_src/zstd/lib/compress/zstd_double_fast.c +778 -0
  1909. hdiffpatch/_c_src/zstd/lib/compress/zstd_double_fast.h +42 -0
  1910. hdiffpatch/_c_src/zstd/lib/compress/zstd_fast.c +985 -0
  1911. hdiffpatch/_c_src/zstd/lib/compress/zstd_fast.h +30 -0
  1912. hdiffpatch/_c_src/zstd/lib/compress/zstd_lazy.c +2199 -0
  1913. hdiffpatch/_c_src/zstd/lib/compress/zstd_lazy.h +193 -0
  1914. hdiffpatch/_c_src/zstd/lib/compress/zstd_ldm.c +745 -0
  1915. hdiffpatch/_c_src/zstd/lib/compress/zstd_ldm.h +109 -0
  1916. hdiffpatch/_c_src/zstd/lib/compress/zstd_ldm_geartab.h +106 -0
  1917. hdiffpatch/_c_src/zstd/lib/compress/zstd_opt.c +1580 -0
  1918. hdiffpatch/_c_src/zstd/lib/compress/zstd_opt.h +72 -0
  1919. hdiffpatch/_c_src/zstd/lib/compress/zstd_preSplit.c +238 -0
  1920. hdiffpatch/_c_src/zstd/lib/compress/zstd_preSplit.h +33 -0
  1921. hdiffpatch/_c_src/zstd/lib/compress/zstdmt_compress.c +1923 -0
  1922. hdiffpatch/_c_src/zstd/lib/compress/zstdmt_compress.h +102 -0
  1923. hdiffpatch/_c_src/zstd/lib/decompress/huf_decompress.c +1944 -0
  1924. hdiffpatch/_c_src/zstd/lib/decompress/huf_decompress_amd64.S +602 -0
  1925. hdiffpatch/_c_src/zstd/lib/decompress/zstd_ddict.c +244 -0
  1926. hdiffpatch/_c_src/zstd/lib/decompress/zstd_ddict.h +44 -0
  1927. hdiffpatch/_c_src/zstd/lib/decompress/zstd_decompress.c +2410 -0
  1928. hdiffpatch/_c_src/zstd/lib/decompress/zstd_decompress_block.c +2209 -0
  1929. hdiffpatch/_c_src/zstd/lib/decompress/zstd_decompress_block.h +73 -0
  1930. hdiffpatch/_c_src/zstd/lib/decompress/zstd_decompress_internal.h +240 -0
  1931. hdiffpatch/_c_src/zstd/lib/deprecated/zbuff.h +214 -0
  1932. hdiffpatch/_c_src/zstd/lib/deprecated/zbuff_common.c +26 -0
  1933. hdiffpatch/_c_src/zstd/lib/deprecated/zbuff_compress.c +167 -0
  1934. hdiffpatch/_c_src/zstd/lib/deprecated/zbuff_decompress.c +77 -0
  1935. hdiffpatch/_c_src/zstd/lib/dictBuilder/cover.c +1302 -0
  1936. hdiffpatch/_c_src/zstd/lib/dictBuilder/cover.h +152 -0
  1937. hdiffpatch/_c_src/zstd/lib/dictBuilder/divsufsort.c +1913 -0
  1938. hdiffpatch/_c_src/zstd/lib/dictBuilder/divsufsort.h +57 -0
  1939. hdiffpatch/_c_src/zstd/lib/dictBuilder/fastcover.c +766 -0
  1940. hdiffpatch/_c_src/zstd/lib/dictBuilder/zdict.c +1133 -0
  1941. hdiffpatch/_c_src/zstd/lib/dll/example/Makefile +48 -0
  1942. hdiffpatch/_c_src/zstd/lib/dll/example/README.md +63 -0
  1943. hdiffpatch/_c_src/zstd/lib/dll/example/build_package.bat +20 -0
  1944. hdiffpatch/_c_src/zstd/lib/dll/example/fullbench-dll.sln +25 -0
  1945. hdiffpatch/_c_src/zstd/lib/dll/example/fullbench-dll.vcxproj +181 -0
  1946. hdiffpatch/_c_src/zstd/lib/legacy/zstd_legacy.h +452 -0
  1947. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v01.c +2127 -0
  1948. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v01.h +94 -0
  1949. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v02.c +3465 -0
  1950. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v02.h +93 -0
  1951. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v03.c +3105 -0
  1952. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v03.h +93 -0
  1953. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v04.c +3598 -0
  1954. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v04.h +142 -0
  1955. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v05.c +4005 -0
  1956. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v05.h +162 -0
  1957. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v06.c +4110 -0
  1958. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v06.h +172 -0
  1959. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v07.c +4490 -0
  1960. hdiffpatch/_c_src/zstd/lib/legacy/zstd_v07.h +187 -0
  1961. hdiffpatch/_c_src/zstd/lib/libzstd.mk +235 -0
  1962. hdiffpatch/_c_src/zstd/lib/libzstd.pc.in +16 -0
  1963. hdiffpatch/_c_src/zstd/lib/module.modulemap +35 -0
  1964. hdiffpatch/_c_src/zstd/lib/zdict.h +481 -0
  1965. hdiffpatch/_c_src/zstd/lib/zstd.h +3206 -0
  1966. hdiffpatch/_c_src/zstd/lib/zstd_errors.h +107 -0
  1967. hdiffpatch/_c_src/zstd/programs/.gitignore +41 -0
  1968. hdiffpatch/_c_src/zstd/programs/BUCK +44 -0
  1969. hdiffpatch/_c_src/zstd/programs/Makefile +445 -0
  1970. hdiffpatch/_c_src/zstd/programs/README.md +344 -0
  1971. hdiffpatch/_c_src/zstd/programs/benchfn.c +256 -0
  1972. hdiffpatch/_c_src/zstd/programs/benchfn.h +173 -0
  1973. hdiffpatch/_c_src/zstd/programs/benchzstd.c +1281 -0
  1974. hdiffpatch/_c_src/zstd/programs/benchzstd.h +191 -0
  1975. hdiffpatch/_c_src/zstd/programs/datagen.c +186 -0
  1976. hdiffpatch/_c_src/zstd/programs/datagen.h +38 -0
  1977. hdiffpatch/_c_src/zstd/programs/dibio.c +440 -0
  1978. hdiffpatch/_c_src/zstd/programs/dibio.h +39 -0
  1979. hdiffpatch/_c_src/zstd/programs/fileio.c +3464 -0
  1980. hdiffpatch/_c_src/zstd/programs/fileio.h +171 -0
  1981. hdiffpatch/_c_src/zstd/programs/fileio_asyncio.c +663 -0
  1982. hdiffpatch/_c_src/zstd/programs/fileio_asyncio.h +195 -0
  1983. hdiffpatch/_c_src/zstd/programs/fileio_common.h +121 -0
  1984. hdiffpatch/_c_src/zstd/programs/fileio_types.h +86 -0
  1985. hdiffpatch/_c_src/zstd/programs/lorem.c +285 -0
  1986. hdiffpatch/_c_src/zstd/programs/lorem.h +32 -0
  1987. hdiffpatch/_c_src/zstd/programs/platform.h +217 -0
  1988. hdiffpatch/_c_src/zstd/programs/timefn.c +168 -0
  1989. hdiffpatch/_c_src/zstd/programs/timefn.h +59 -0
  1990. hdiffpatch/_c_src/zstd/programs/util.c +1643 -0
  1991. hdiffpatch/_c_src/zstd/programs/util.h +362 -0
  1992. hdiffpatch/_c_src/zstd/programs/windres/verrsrc.h +17 -0
  1993. hdiffpatch/_c_src/zstd/programs/windres/zstd.rc +51 -0
  1994. hdiffpatch/_c_src/zstd/programs/windres/zstd32.res +0 -0
  1995. hdiffpatch/_c_src/zstd/programs/windres/zstd64.res +0 -0
  1996. hdiffpatch/_c_src/zstd/programs/zstd.1 +392 -0
  1997. hdiffpatch/_c_src/zstd/programs/zstd.1.md +714 -0
  1998. hdiffpatch/_c_src/zstd/programs/zstdcli.c +1658 -0
  1999. hdiffpatch/_c_src/zstd/programs/zstdcli_trace.c +172 -0
  2000. hdiffpatch/_c_src/zstd/programs/zstdcli_trace.h +24 -0
  2001. hdiffpatch/_c_src/zstd/programs/zstdgrep +134 -0
  2002. hdiffpatch/_c_src/zstd/programs/zstdgrep.1 +26 -0
  2003. hdiffpatch/_c_src/zstd/programs/zstdgrep.1.md +30 -0
  2004. hdiffpatch/_c_src/zstd/programs/zstdless +8 -0
  2005. hdiffpatch/_c_src/zstd/programs/zstdless.1 +14 -0
  2006. hdiffpatch/_c_src/zstd/programs/zstdless.1.md +16 -0
  2007. hdiffpatch/_c_src/zstd/tests/.gitignore +72 -0
  2008. hdiffpatch/_c_src/zstd/tests/DEPRECATED-test-zstd-speed.py +378 -0
  2009. hdiffpatch/_c_src/zstd/tests/Makefile +481 -0
  2010. hdiffpatch/_c_src/zstd/tests/README.md +184 -0
  2011. hdiffpatch/_c_src/zstd/tests/automated_benchmarking.py +326 -0
  2012. hdiffpatch/_c_src/zstd/tests/bigdict.c +133 -0
  2013. hdiffpatch/_c_src/zstd/tests/checkTag.c +65 -0
  2014. hdiffpatch/_c_src/zstd/tests/check_size.py +31 -0
  2015. hdiffpatch/_c_src/zstd/tests/cli-tests/.gitignore +6 -0
  2016. hdiffpatch/_c_src/zstd/tests/cli-tests/README.md +258 -0
  2017. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/args.sh +10 -0
  2018. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/args.sh.exit +1 -0
  2019. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/args.sh.stderr.glob +28 -0
  2020. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/help.sh +10 -0
  2021. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/help.sh.stdout.glob +34 -0
  2022. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/memlimit.sh +40 -0
  2023. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/memlimit.sh.stderr.exact +13 -0
  2024. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/memlimit.sh.stdout.exact +13 -0
  2025. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/output_dir.sh +7 -0
  2026. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/output_dir.sh.stderr.exact +2 -0
  2027. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/output_dir.sh.stdout.exact +2 -0
  2028. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/version.sh +6 -0
  2029. hdiffpatch/_c_src/zstd/tests/cli-tests/basic/version.sh.stdout.glob +2 -0
  2030. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/cmp_size +44 -0
  2031. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/datagen +3 -0
  2032. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/die +4 -0
  2033. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/println +2 -0
  2034. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/zstd +9 -0
  2035. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/zstdgrep +2 -0
  2036. hdiffpatch/_c_src/zstd/tests/cli-tests/bin/zstdless +2 -0
  2037. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/setup +6 -0
  2038. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdgrep.sh +8 -0
  2039. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdgrep.sh.exit +1 -0
  2040. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdgrep.sh.stderr.exact +1 -0
  2041. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdgrep.sh.stdout.glob +4 -0
  2042. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdless.sh +10 -0
  2043. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdless.sh.stderr.exact +2 -0
  2044. hdiffpatch/_c_src/zstd/tests/cli-tests/cltools/zstdless.sh.stdout.glob +5 -0
  2045. hdiffpatch/_c_src/zstd/tests/cli-tests/common/format.sh +19 -0
  2046. hdiffpatch/_c_src/zstd/tests/cli-tests/common/mtime.sh +13 -0
  2047. hdiffpatch/_c_src/zstd/tests/cli-tests/common/permissions.sh +18 -0
  2048. hdiffpatch/_c_src/zstd/tests/cli-tests/common/platform.sh +36 -0
  2049. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/adapt.sh +14 -0
  2050. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/basic.sh +36 -0
  2051. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/compress-literals.sh +10 -0
  2052. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/format.sh +16 -0
  2053. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/golden.sh +16 -0
  2054. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/gzip-compat.sh +17 -0
  2055. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/levels.sh +75 -0
  2056. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/levels.sh.stderr.exact +80 -0
  2057. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/long-distance-matcher.sh +7 -0
  2058. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/multi-threaded.sh +15 -0
  2059. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/multi-threaded.sh.stderr.exact +11 -0
  2060. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/multiple-files.sh +21 -0
  2061. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/multiple-files.sh.stdout.exact +12 -0
  2062. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/row-match-finder.sh +7 -0
  2063. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/setup +7 -0
  2064. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/stream-size.sh +7 -0
  2065. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/verbose-wlog.sh +11 -0
  2066. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/verbose-wlog.sh.stderr.glob +5 -0
  2067. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/verbose-wlog.sh.stdout.glob +5 -0
  2068. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/window-resize.sh +9 -0
  2069. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/window-resize.sh.stderr.ignore +0 -0
  2070. hdiffpatch/_c_src/zstd/tests/cli-tests/compression/window-resize.sh.stdout.glob +3 -0
  2071. hdiffpatch/_c_src/zstd/tests/cli-tests/decompression/detectErrors.sh +11 -0
  2072. hdiffpatch/_c_src/zstd/tests/cli-tests/decompression/golden.sh +7 -0
  2073. hdiffpatch/_c_src/zstd/tests/cli-tests/decompression/pass-through.sh +57 -0
  2074. hdiffpatch/_c_src/zstd/tests/cli-tests/decompression/pass-through.sh.stderr.exact +11 -0
  2075. hdiffpatch/_c_src/zstd/tests/cli-tests/decompression/pass-through.sh.stdout.exact +25 -0
  2076. hdiffpatch/_c_src/zstd/tests/cli-tests/dict-builder/empty-input.sh +9 -0
  2077. hdiffpatch/_c_src/zstd/tests/cli-tests/dict-builder/empty-input.sh.stderr.exact +1 -0
  2078. hdiffpatch/_c_src/zstd/tests/cli-tests/dict-builder/no-inputs.sh +3 -0
  2079. hdiffpatch/_c_src/zstd/tests/cli-tests/dict-builder/no-inputs.sh.exit +1 -0
  2080. hdiffpatch/_c_src/zstd/tests/cli-tests/dict-builder/no-inputs.sh.stderr.exact +5 -0
  2081. hdiffpatch/_c_src/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh +29 -0
  2082. hdiffpatch/_c_src/zstd/tests/cli-tests/dictionaries/dictionary-mismatch.sh.stderr.exact +7 -0
  2083. hdiffpatch/_c_src/zstd/tests/cli-tests/dictionaries/golden.sh +9 -0
  2084. hdiffpatch/_c_src/zstd/tests/cli-tests/dictionaries/setup +6 -0
  2085. hdiffpatch/_c_src/zstd/tests/cli-tests/dictionaries/setup_once +24 -0
  2086. hdiffpatch/_c_src/zstd/tests/cli-tests/file-handling/directory-mirror.sh +49 -0
  2087. hdiffpatch/_c_src/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stderr.exact +0 -0
  2088. hdiffpatch/_c_src/zstd/tests/cli-tests/file-handling/directory-mirror.sh.stdout.exact +0 -0
  2089. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh +12 -0
  2090. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-file-to-dir-without-write-perm.sh.stderr.exact +26 -0
  2091. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh +9 -0
  2092. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-file-to-file.sh.stderr.exact +42 -0
  2093. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh +8 -0
  2094. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-file-to-stdout.sh.stderr.exact +24 -0
  2095. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh +8 -0
  2096. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-stdin-to-file.sh.stderr.exact +24 -0
  2097. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh +8 -0
  2098. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/compress-stdin-to-stdout.sh.stderr.exact +18 -0
  2099. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh +8 -0
  2100. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-file-to-file.sh.stderr.exact +38 -0
  2101. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh +7 -0
  2102. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-file-to-stdout.sh.stderr.exact +18 -0
  2103. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh +7 -0
  2104. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-stdin-to-file.sh.stderr.exact +20 -0
  2105. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh +7 -0
  2106. hdiffpatch/_c_src/zstd/tests/cli-tests/file-stat/decompress-stdin-to-stdout.sh.stderr.exact +14 -0
  2107. hdiffpatch/_c_src/zstd/tests/cli-tests/progress/no-progress.sh +46 -0
  2108. hdiffpatch/_c_src/zstd/tests/cli-tests/progress/no-progress.sh.stderr.glob +96 -0
  2109. hdiffpatch/_c_src/zstd/tests/cli-tests/progress/progress.sh +41 -0
  2110. hdiffpatch/_c_src/zstd/tests/cli-tests/progress/progress.sh.stderr.glob +62 -0
  2111. hdiffpatch/_c_src/zstd/tests/cli-tests/run.py +731 -0
  2112. hdiffpatch/_c_src/zstd/tests/cli-tests/zstd-symlinks/setup +6 -0
  2113. hdiffpatch/_c_src/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh +12 -0
  2114. hdiffpatch/_c_src/zstd/tests/cli-tests/zstd-symlinks/zstdcat.sh.stdout.exact +8 -0
  2115. hdiffpatch/_c_src/zstd/tests/datagencli.c +149 -0
  2116. hdiffpatch/_c_src/zstd/tests/decodecorpus.c +1998 -0
  2117. hdiffpatch/_c_src/zstd/tests/dict-files/zero-weight-dict +0 -0
  2118. hdiffpatch/_c_src/zstd/tests/external_matchfinder.c +140 -0
  2119. hdiffpatch/_c_src/zstd/tests/external_matchfinder.h +39 -0
  2120. hdiffpatch/_c_src/zstd/tests/fullbench.c +1209 -0
  2121. hdiffpatch/_c_src/zstd/tests/fuzz/.gitignore +31 -0
  2122. hdiffpatch/_c_src/zstd/tests/fuzz/Makefile +278 -0
  2123. hdiffpatch/_c_src/zstd/tests/fuzz/README.md +161 -0
  2124. hdiffpatch/_c_src/zstd/tests/fuzz/block_decompress.c +53 -0
  2125. hdiffpatch/_c_src/zstd/tests/fuzz/block_round_trip.c +103 -0
  2126. hdiffpatch/_c_src/zstd/tests/fuzz/decompress_cross_format.c +130 -0
  2127. hdiffpatch/_c_src/zstd/tests/fuzz/decompress_dstSize_tooSmall.c +74 -0
  2128. hdiffpatch/_c_src/zstd/tests/fuzz/dictionary_decompress.c +77 -0
  2129. hdiffpatch/_c_src/zstd/tests/fuzz/dictionary_loader.c +106 -0
  2130. hdiffpatch/_c_src/zstd/tests/fuzz/dictionary_round_trip.c +155 -0
  2131. hdiffpatch/_c_src/zstd/tests/fuzz/dictionary_stream_round_trip.c +209 -0
  2132. hdiffpatch/_c_src/zstd/tests/fuzz/fse_read_ncount.c +100 -0
  2133. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz.h +57 -0
  2134. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz.py +910 -0
  2135. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz_data_producer.c +95 -0
  2136. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz_data_producer.h +66 -0
  2137. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz_helpers.c +48 -0
  2138. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz_helpers.h +81 -0
  2139. hdiffpatch/_c_src/zstd/tests/fuzz/fuzz_third_party_seq_prod.h +116 -0
  2140. hdiffpatch/_c_src/zstd/tests/fuzz/generate_sequences.c +88 -0
  2141. hdiffpatch/_c_src/zstd/tests/fuzz/huf_decompress.c +68 -0
  2142. hdiffpatch/_c_src/zstd/tests/fuzz/huf_round_trip.c +137 -0
  2143. hdiffpatch/_c_src/zstd/tests/fuzz/raw_dictionary_round_trip.c +119 -0
  2144. hdiffpatch/_c_src/zstd/tests/fuzz/regression_driver.c +90 -0
  2145. hdiffpatch/_c_src/zstd/tests/fuzz/seekable_roundtrip.c +88 -0
  2146. hdiffpatch/_c_src/zstd/tests/fuzz/seq_prod_fuzz_example/Makefile +16 -0
  2147. hdiffpatch/_c_src/zstd/tests/fuzz/seq_prod_fuzz_example/README.md +12 -0
  2148. hdiffpatch/_c_src/zstd/tests/fuzz/seq_prod_fuzz_example/example_seq_prod.c +52 -0
  2149. hdiffpatch/_c_src/zstd/tests/fuzz/sequence_compression_api.c +452 -0
  2150. hdiffpatch/_c_src/zstd/tests/fuzz/simple_compress.c +60 -0
  2151. hdiffpatch/_c_src/zstd/tests/fuzz/simple_decompress.c +59 -0
  2152. hdiffpatch/_c_src/zstd/tests/fuzz/simple_round_trip.c +182 -0
  2153. hdiffpatch/_c_src/zstd/tests/fuzz/stream_decompress.c +119 -0
  2154. hdiffpatch/_c_src/zstd/tests/fuzz/stream_round_trip.c +218 -0
  2155. hdiffpatch/_c_src/zstd/tests/fuzz/zstd_frame_info.c +43 -0
  2156. hdiffpatch/_c_src/zstd/tests/fuzz/zstd_helpers.c +208 -0
  2157. hdiffpatch/_c_src/zstd/tests/fuzz/zstd_helpers.h +56 -0
  2158. hdiffpatch/_c_src/zstd/tests/fuzzer.c +5147 -0
  2159. hdiffpatch/_c_src/zstd/tests/golden-compression/PR-3517-block-splitter-corruption-test +1 -0
  2160. hdiffpatch/_c_src/zstd/tests/golden-compression/http +1 -0
  2161. hdiffpatch/_c_src/zstd/tests/golden-compression/huffman-compressed-larger +0 -0
  2162. hdiffpatch/_c_src/zstd/tests/golden-compression/large-literal-and-match-lengths +0 -0
  2163. hdiffpatch/_c_src/zstd/tests/golden-decompression/block-128k.zst +0 -0
  2164. hdiffpatch/_c_src/zstd/tests/golden-decompression/empty-block.zst +0 -0
  2165. hdiffpatch/_c_src/zstd/tests/golden-decompression/rle-first-block.zst +0 -0
  2166. hdiffpatch/_c_src/zstd/tests/golden-decompression/zeroSeq_2B.zst +0 -0
  2167. hdiffpatch/_c_src/zstd/tests/golden-decompression-errors/.gitignore +1 -0
  2168. hdiffpatch/_c_src/zstd/tests/golden-decompression-errors/off0.bin.zst +0 -0
  2169. hdiffpatch/_c_src/zstd/tests/golden-decompression-errors/truncated_huff_state.zst +0 -0
  2170. hdiffpatch/_c_src/zstd/tests/golden-decompression-errors/zeroSeq_extraneous.zst +0 -0
  2171. hdiffpatch/_c_src/zstd/tests/golden-dictionaries/http-dict-missing-symbols +0 -0
  2172. hdiffpatch/_c_src/zstd/tests/gzip/Makefile +45 -0
  2173. hdiffpatch/_c_src/zstd/tests/gzip/gzip-env.sh +46 -0
  2174. hdiffpatch/_c_src/zstd/tests/gzip/helin-segv.sh +31 -0
  2175. hdiffpatch/_c_src/zstd/tests/gzip/help-version.sh +270 -0
  2176. hdiffpatch/_c_src/zstd/tests/gzip/hufts-segv.gz +0 -0
  2177. hdiffpatch/_c_src/zstd/tests/gzip/hufts.sh +34 -0
  2178. hdiffpatch/_c_src/zstd/tests/gzip/init.cfg +5 -0
  2179. hdiffpatch/_c_src/zstd/tests/gzip/init.sh +616 -0
  2180. hdiffpatch/_c_src/zstd/tests/gzip/keep.sh +51 -0
  2181. hdiffpatch/_c_src/zstd/tests/gzip/list.sh +31 -0
  2182. hdiffpatch/_c_src/zstd/tests/gzip/memcpy-abuse.sh +34 -0
  2183. hdiffpatch/_c_src/zstd/tests/gzip/mixed.sh +68 -0
  2184. hdiffpatch/_c_src/zstd/tests/gzip/null-suffix-clobber.sh +35 -0
  2185. hdiffpatch/_c_src/zstd/tests/gzip/stdin.sh +31 -0
  2186. hdiffpatch/_c_src/zstd/tests/gzip/test-driver.sh +150 -0
  2187. hdiffpatch/_c_src/zstd/tests/gzip/trailing-nul.sh +37 -0
  2188. hdiffpatch/_c_src/zstd/tests/gzip/unpack-invalid.sh +36 -0
  2189. hdiffpatch/_c_src/zstd/tests/gzip/z-suffix.sh +30 -0
  2190. hdiffpatch/_c_src/zstd/tests/gzip/zdiff.sh +48 -0
  2191. hdiffpatch/_c_src/zstd/tests/gzip/zgrep-context.sh +47 -0
  2192. hdiffpatch/_c_src/zstd/tests/gzip/zgrep-f.sh +43 -0
  2193. hdiffpatch/_c_src/zstd/tests/gzip/zgrep-signal.sh +64 -0
  2194. hdiffpatch/_c_src/zstd/tests/gzip/znew-k.sh +40 -0
  2195. hdiffpatch/_c_src/zstd/tests/invalidDictionaries.c +61 -0
  2196. hdiffpatch/_c_src/zstd/tests/largeDictionary.c +128 -0
  2197. hdiffpatch/_c_src/zstd/tests/legacy.c +260 -0
  2198. hdiffpatch/_c_src/zstd/tests/libzstd_builds.sh +104 -0
  2199. hdiffpatch/_c_src/zstd/tests/longmatch.c +102 -0
  2200. hdiffpatch/_c_src/zstd/tests/loremOut.c +50 -0
  2201. hdiffpatch/_c_src/zstd/tests/loremOut.h +15 -0
  2202. hdiffpatch/_c_src/zstd/tests/paramgrill.c +2965 -0
  2203. hdiffpatch/_c_src/zstd/tests/playTests.sh +1925 -0
  2204. hdiffpatch/_c_src/zstd/tests/poolTests.c +271 -0
  2205. hdiffpatch/_c_src/zstd/tests/rateLimiter.py +41 -0
  2206. hdiffpatch/_c_src/zstd/tests/regression/.gitignore +4 -0
  2207. hdiffpatch/_c_src/zstd/tests/regression/Makefile +60 -0
  2208. hdiffpatch/_c_src/zstd/tests/regression/README.md +28 -0
  2209. hdiffpatch/_c_src/zstd/tests/regression/config.c +404 -0
  2210. hdiffpatch/_c_src/zstd/tests/regression/config.h +91 -0
  2211. hdiffpatch/_c_src/zstd/tests/regression/data.c +631 -0
  2212. hdiffpatch/_c_src/zstd/tests/regression/data.h +121 -0
  2213. hdiffpatch/_c_src/zstd/tests/regression/levels.h +59 -0
  2214. hdiffpatch/_c_src/zstd/tests/regression/method.c +701 -0
  2215. hdiffpatch/_c_src/zstd/tests/regression/method.h +65 -0
  2216. hdiffpatch/_c_src/zstd/tests/regression/result.c +30 -0
  2217. hdiffpatch/_c_src/zstd/tests/regression/result.h +103 -0
  2218. hdiffpatch/_c_src/zstd/tests/regression/results.csv +1480 -0
  2219. hdiffpatch/_c_src/zstd/tests/regression/test.c +362 -0
  2220. hdiffpatch/_c_src/zstd/tests/roundTripCrash.c +241 -0
  2221. hdiffpatch/_c_src/zstd/tests/seqgen.c +260 -0
  2222. hdiffpatch/_c_src/zstd/tests/seqgen.h +58 -0
  2223. hdiffpatch/_c_src/zstd/tests/test-license.py +156 -0
  2224. hdiffpatch/_c_src/zstd/tests/test-variants.sh +115 -0
  2225. hdiffpatch/_c_src/zstd/tests/test-zstd-versions.py +308 -0
  2226. hdiffpatch/_c_src/zstd/tests/zstreamtest.c +3467 -0
  2227. hdiffpatch/_c_src/zstd/zlibWrapper/.gitignore +28 -0
  2228. hdiffpatch/_c_src/zstd/zlibWrapper/BUCK +22 -0
  2229. hdiffpatch/_c_src/zstd/zlibWrapper/Makefile +120 -0
  2230. hdiffpatch/_c_src/zstd/zlibWrapper/README.md +163 -0
  2231. hdiffpatch/_c_src/zstd/zlibWrapper/examples/example.c +598 -0
  2232. hdiffpatch/_c_src/zstd/zlibWrapper/examples/example_original.c +599 -0
  2233. hdiffpatch/_c_src/zstd/zlibWrapper/examples/fitblk.c +254 -0
  2234. hdiffpatch/_c_src/zstd/zlibWrapper/examples/fitblk_original.c +233 -0
  2235. hdiffpatch/_c_src/zstd/zlibWrapper/examples/minigzip.c +605 -0
  2236. hdiffpatch/_c_src/zstd/zlibWrapper/examples/zwrapbench.c +1018 -0
  2237. hdiffpatch/_c_src/zstd/zlibWrapper/gzclose.c +26 -0
  2238. hdiffpatch/_c_src/zstd/zlibWrapper/gzcompatibility.h +68 -0
  2239. hdiffpatch/_c_src/zstd/zlibWrapper/gzguts.h +229 -0
  2240. hdiffpatch/_c_src/zstd/zlibWrapper/gzlib.c +587 -0
  2241. hdiffpatch/_c_src/zstd/zlibWrapper/gzread.c +637 -0
  2242. hdiffpatch/_c_src/zstd/zlibWrapper/gzwrite.c +632 -0
  2243. hdiffpatch/_c_src/zstd/zlibWrapper/zstd_zlibwrapper.c +1200 -0
  2244. hdiffpatch/_c_src/zstd/zlibWrapper/zstd_zlibwrapper.h +91 -0
  2245. hdiffpatch/_lzma_config.py +215 -0
  2246. hdiffpatch/_tamp_config.py +85 -0
  2247. hdiffpatch/_zlib_config.py +177 -0
  2248. hdiffpatch/_zstd_config.py +113 -0
  2249. hdiffpatch/py.typed +0 -0
  2250. hdiffpatch-1.0.0.dist-info/LICENSE +201 -0
  2251. hdiffpatch-1.0.0.dist-info/METADATA +376 -0
  2252. hdiffpatch-1.0.0.dist-info/RECORD +2254 -0
  2253. hdiffpatch-1.0.0.dist-info/WHEEL +4 -0
  2254. hdiffpatch-1.0.0.dist-info/entry_points.txt +0 -0
@@ -0,0 +1,4971 @@
1
+ // Bench.cpp
2
+
3
+ #include "StdAfx.h"
4
+
5
+ // #include <stdio.h>
6
+
7
+ #ifndef _WIN32
8
+ #define USE_POSIX_TIME
9
+ #define USE_POSIX_TIME2
10
+ #endif // _WIN32
11
+
12
+ #ifdef USE_POSIX_TIME
13
+ #include <time.h>
14
+ #include <unistd.h>
15
+ #ifdef USE_POSIX_TIME2
16
+ #include <sys/time.h>
17
+ #include <sys/times.h>
18
+ #endif
19
+ #endif // USE_POSIX_TIME
20
+
21
+ #ifdef _WIN32
22
+ #define USE_ALLOCA
23
+ #endif
24
+
25
+ #ifdef USE_ALLOCA
26
+ #ifdef _WIN32
27
+ #include <malloc.h>
28
+ #else
29
+ #include <stdlib.h>
30
+ #endif
31
+ #define BENCH_ALLOCA_VALUE(index) (((index) * 64 * 21) & 0x7FF)
32
+ #endif
33
+
34
+ #include "../../../../C/7zCrc.h"
35
+ #include "../../../../C/RotateDefs.h"
36
+ #include "../../../../C/CpuArch.h"
37
+
38
+ #ifndef Z7_ST
39
+ #include "../../../Windows/Synchronization.h"
40
+ #include "../../../Windows/Thread.h"
41
+ #endif
42
+
43
+ #include "../../../Windows/FileFind.h"
44
+ #include "../../../Windows/FileIO.h"
45
+ #include "../../../Windows/SystemInfo.h"
46
+
47
+ #include "../../../Common/MyBuffer2.h"
48
+ #include "../../../Common/IntToString.h"
49
+ #include "../../../Common/StringConvert.h"
50
+ #include "../../../Common/StringToInt.h"
51
+ #include "../../../Common/Wildcard.h"
52
+
53
+ #include "../../Common/MethodProps.h"
54
+ #include "../../Common/StreamObjects.h"
55
+ #include "../../Common/StreamUtils.h"
56
+
57
+ #include "Bench.h"
58
+
59
+ using namespace NWindows;
60
+
61
+ #ifndef Z7_ST
62
+ static const UInt32 k_LZMA = 0x030101;
63
+ #endif
64
+
65
+ static const UInt64 kComplexInCommands = (UInt64)1 <<
66
+ #ifdef UNDER_CE
67
+ 31;
68
+ #else
69
+ 34;
70
+ #endif
71
+
72
+ static const UInt32 kComplexInMs = 4000;
73
+
74
+ static void SetComplexCommandsMs(UInt32 complexInMs,
75
+ bool isSpecifiedFreq, UInt64 cpuFreq, UInt64 &complexInCommands)
76
+ {
77
+ complexInCommands = kComplexInCommands;
78
+ const UInt64 kMinFreq = (UInt64)1000000 * 4;
79
+ const UInt64 kMaxFreq = (UInt64)1000000 * 20000;
80
+ if (cpuFreq < kMinFreq && !isSpecifiedFreq)
81
+ cpuFreq = kMinFreq;
82
+ if (cpuFreq < kMaxFreq || isSpecifiedFreq)
83
+ {
84
+ if (complexInMs != 0)
85
+ complexInCommands = complexInMs * cpuFreq / 1000;
86
+ else
87
+ complexInCommands = cpuFreq >> 2;
88
+ }
89
+ }
90
+
91
+ // const UInt64 kBenchmarkUsageMult = 1000000; // for debug
92
+ static const unsigned kBenchmarkUsageMultBits = 16;
93
+ static const UInt64 kBenchmarkUsageMult = 1 << kBenchmarkUsageMultBits;
94
+
95
+ UInt64 Benchmark_GetUsage_Percents(UInt64 usage)
96
+ {
97
+ return (100 * usage + kBenchmarkUsageMult / 2) / kBenchmarkUsageMult;
98
+ }
99
+
100
+ static const unsigned kNumHashDictBits = 17;
101
+ static const UInt32 kFilterUnpackSize = (47 << 10); // + 5; // for test
102
+
103
+ static const unsigned kOldLzmaDictBits = 32;
104
+
105
+ // static const size_t kAdditionalSize = (size_t)1 << 32; // for debug
106
+ static const size_t kAdditionalSize = (size_t)1 << 16;
107
+ static const size_t kCompressedAdditionalSize = 1 << 10;
108
+
109
+ static const UInt32 kMaxMethodPropSize = 1 << 6;
110
+
111
+
112
+ #define ALLOC_WITH_HRESULT(_buffer_, _size_) \
113
+ { (_buffer_)->Alloc(_size_); \
114
+ if (_size_ && !(_buffer_)->IsAllocated()) return E_OUTOFMEMORY; }
115
+
116
+
117
+ class CBaseRandomGenerator
118
+ {
119
+ UInt32 A1;
120
+ UInt32 A2;
121
+ UInt32 Salt;
122
+ public:
123
+ CBaseRandomGenerator(UInt32 salt = 0): Salt(salt) { Init(); }
124
+ void Init() { A1 = 362436069; A2 = 521288629;}
125
+ Z7_FORCE_INLINE
126
+ UInt32 GetRnd()
127
+ {
128
+ #if 0
129
+ // for debug:
130
+ return 0x0c080400;
131
+ // return 0;
132
+ #else
133
+ return Salt ^
134
+ (
135
+ ((A1 = 36969 * (A1 & 0xffff) + (A1 >> 16)) << 16) +
136
+ ((A2 = 18000 * (A2 & 0xffff) + (A2 >> 16)) )
137
+ );
138
+ #endif
139
+ }
140
+ };
141
+
142
+
143
+ static const size_t k_RandBuf_AlignMask = 4 - 1;
144
+
145
+ Z7_NO_INLINE
146
+ static void RandGen_BufAfterPad(Byte *buf, size_t size)
147
+ {
148
+ CBaseRandomGenerator RG;
149
+ for (size_t i = 0; i < size; i += 4)
150
+ {
151
+ const UInt32 v = RG.GetRnd();
152
+ SetUi32a(buf + i, v)
153
+ }
154
+ /*
155
+ UInt32 v = RG.GetRnd();
156
+ for (; i < size; i++)
157
+ {
158
+ buf[i] = (Byte)v;
159
+ v >>= 8;
160
+ }
161
+ */
162
+ }
163
+
164
+
165
+ class CBenchRandomGenerator: public CMidAlignedBuffer
166
+ {
167
+ static UInt32 GetVal(UInt32 &res, unsigned numBits)
168
+ {
169
+ const UInt32 val = res & (((UInt32)1 << numBits) - 1);
170
+ res >>= numBits;
171
+ return val;
172
+ }
173
+
174
+ static UInt32 GetLen(UInt32 &r)
175
+ {
176
+ const unsigned len = (unsigned)GetVal(r, 2);
177
+ return GetVal(r, 1 + len);
178
+ }
179
+
180
+ public:
181
+
182
+ void GenerateSimpleRandom(UInt32 salt)
183
+ {
184
+ CBaseRandomGenerator rg(salt);
185
+ const size_t bufSize = Size();
186
+ Byte *buf = (Byte *)*this;
187
+ for (size_t i = 0; i < bufSize; i++)
188
+ buf[i] = (Byte)rg.GetRnd();
189
+ }
190
+
191
+ void GenerateLz(unsigned dictBits, UInt32 salt)
192
+ {
193
+ CBaseRandomGenerator rg(salt);
194
+ size_t pos = 0;
195
+ size_t rep0 = 1;
196
+ const size_t bufSize = Size();
197
+ Byte *buf = (Byte *)*this;
198
+ unsigned posBits = 1;
199
+
200
+ // printf("\n dictBits = %d\n", (UInt32)dictBits);
201
+ // printf("\n bufSize = 0x%p\n", (const void *)bufSize);
202
+
203
+ while (pos < bufSize)
204
+ {
205
+ /*
206
+ if (pos >= ((UInt32)1 << 31))
207
+ printf(" %x\n", pos);
208
+ */
209
+ UInt32 r = rg.GetRnd();
210
+ if (GetVal(r, 1) == 0 || pos < 1024)
211
+ buf[pos++] = (Byte)(r & 0xFF);
212
+ else
213
+ {
214
+ UInt32 len;
215
+ len = 1 + GetLen(r);
216
+
217
+ if (GetVal(r, 3) != 0)
218
+ {
219
+ len += GetLen(r);
220
+
221
+ while (((size_t)1 << posBits) < pos)
222
+ posBits++;
223
+
224
+ unsigned numBitsMax = dictBits;
225
+ if (numBitsMax > posBits)
226
+ numBitsMax = posBits;
227
+
228
+ const unsigned kAddBits = 6;
229
+ unsigned numLogBits = 5;
230
+ if (numBitsMax <= (1 << 4) - 1 + kAddBits)
231
+ numLogBits = 4;
232
+
233
+ for (;;)
234
+ {
235
+ const UInt32 ppp = GetVal(r, numLogBits) + kAddBits;
236
+ r = rg.GetRnd();
237
+ if (ppp > numBitsMax)
238
+ continue;
239
+ // rep0 = GetVal(r, ppp);
240
+ rep0 = r & (((size_t)1 << ppp) - 1);
241
+ if (rep0 < pos)
242
+ break;
243
+ r = rg.GetRnd();
244
+ }
245
+ rep0++;
246
+ }
247
+
248
+ // len *= 300; // for debug
249
+ {
250
+ const size_t rem = bufSize - pos;
251
+ if (len > rem)
252
+ len = (UInt32)rem;
253
+ }
254
+ Byte *dest = buf + pos;
255
+ const Byte *src = dest - rep0;
256
+ pos += len;
257
+ for (UInt32 i = 0; i < len; i++)
258
+ *dest++ = *src++;
259
+ }
260
+ }
261
+ // printf("\n CRC = %x\n", CrcCalc(buf, bufSize));
262
+ }
263
+ };
264
+
265
+
266
+ Z7_CLASS_IMP_NOQIB_1(
267
+ CBenchmarkInStream
268
+ , ISequentialInStream
269
+ )
270
+ const Byte *Data;
271
+ size_t Pos;
272
+ size_t Size;
273
+ public:
274
+ void Init(const Byte *data, size_t size)
275
+ {
276
+ Data = data;
277
+ Size = size;
278
+ Pos = 0;
279
+ }
280
+ bool WasFinished() const { return Pos == Size; }
281
+ };
282
+
283
+ Z7_COM7F_IMF(CBenchmarkInStream::Read(void *data, UInt32 size, UInt32 *processedSize))
284
+ {
285
+ const UInt32 kMaxBlockSize = (1 << 20);
286
+ if (size > kMaxBlockSize)
287
+ size = kMaxBlockSize;
288
+ const size_t remain = Size - Pos;
289
+ if (size > remain)
290
+ size = (UInt32)remain;
291
+
292
+ if (size)
293
+ memcpy(data, Data + Pos, size);
294
+
295
+ Pos += size;
296
+ if (processedSize)
297
+ *processedSize = size;
298
+ return S_OK;
299
+ }
300
+
301
+
302
+ class CBenchmarkOutStream Z7_final:
303
+ public ISequentialOutStream,
304
+ public CMyUnknownImp,
305
+ public CMidAlignedBuffer
306
+ {
307
+ Z7_COM_UNKNOWN_IMP_0
308
+ Z7_IFACE_COM7_IMP(ISequentialOutStream)
309
+ // bool _overflow;
310
+ public:
311
+ size_t Pos;
312
+ bool RealCopy;
313
+ bool CalcCrc;
314
+ UInt32 Crc;
315
+
316
+ // CBenchmarkOutStream(): _overflow(false) {}
317
+ void Init(bool realCopy, bool calcCrc)
318
+ {
319
+ Crc = CRC_INIT_VAL;
320
+ RealCopy = realCopy;
321
+ CalcCrc = calcCrc;
322
+ // _overflow = false;
323
+ Pos = 0;
324
+ }
325
+
326
+ void InitCrc()
327
+ {
328
+ Crc = CRC_INIT_VAL;
329
+ }
330
+
331
+ void Calc(const void *data, size_t size)
332
+ {
333
+ Crc = CrcUpdate(Crc, data, size);
334
+ }
335
+
336
+ size_t GetPos() const { return Pos; }
337
+
338
+ // void Print() { printf("\n%8d %8d\n", (unsigned)BufferSize, (unsigned)Pos); }
339
+ };
340
+
341
+ Z7_COM7F_IMF(CBenchmarkOutStream::Write(const void *data, UInt32 size, UInt32 *processedSize))
342
+ {
343
+ size_t curSize = Size() - Pos;
344
+ if (curSize > size)
345
+ curSize = size;
346
+ if (curSize != 0)
347
+ {
348
+ if (RealCopy)
349
+ memcpy(((Byte *)*this) + Pos, data, curSize);
350
+ if (CalcCrc)
351
+ Calc(data, curSize);
352
+ Pos += curSize;
353
+ }
354
+ if (processedSize)
355
+ *processedSize = (UInt32)curSize;
356
+ if (curSize != size)
357
+ {
358
+ // _overflow = true;
359
+ return E_FAIL;
360
+ }
361
+ return S_OK;
362
+ }
363
+
364
+
365
+ Z7_CLASS_IMP_NOQIB_1(
366
+ CCrcOutStream
367
+ , ISequentialOutStream
368
+ )
369
+ public:
370
+ bool CalcCrc;
371
+ UInt32 Crc;
372
+ UInt64 Pos;
373
+
374
+ CCrcOutStream(): CalcCrc(true) {}
375
+ void Init() { Crc = CRC_INIT_VAL; Pos = 0; }
376
+ void Calc(const void *data, size_t size)
377
+ {
378
+ Crc = CrcUpdate(Crc, data, size);
379
+ }
380
+ };
381
+
382
+ Z7_COM7F_IMF(CCrcOutStream::Write(const void *data, UInt32 size, UInt32 *processedSize))
383
+ {
384
+ if (CalcCrc)
385
+ Calc(data, size);
386
+ Pos += size;
387
+ if (processedSize)
388
+ *processedSize = size;
389
+ return S_OK;
390
+ }
391
+
392
+ // #include "../../../../C/My_sys_time.h"
393
+
394
+ static UInt64 GetTimeCount()
395
+ {
396
+ #ifdef USE_POSIX_TIME
397
+ #ifdef USE_POSIX_TIME2
398
+ timeval v;
399
+ if (gettimeofday(&v, NULL) == 0)
400
+ return (UInt64)(v.tv_sec) * 1000000 + (UInt64)v.tv_usec;
401
+ return (UInt64)time(NULL) * 1000000;
402
+ #else
403
+ return time(NULL);
404
+ #endif
405
+ #else
406
+ LARGE_INTEGER value;
407
+ if (::QueryPerformanceCounter(&value))
408
+ return (UInt64)value.QuadPart;
409
+ return GetTickCount();
410
+ #endif
411
+ }
412
+
413
+ static UInt64 GetFreq()
414
+ {
415
+ #ifdef USE_POSIX_TIME
416
+ #ifdef USE_POSIX_TIME2
417
+ return 1000000;
418
+ #else
419
+ return 1;
420
+ #endif
421
+ #else
422
+ LARGE_INTEGER value;
423
+ if (::QueryPerformanceFrequency(&value))
424
+ return (UInt64)value.QuadPart;
425
+ return 1000;
426
+ #endif
427
+ }
428
+
429
+
430
+ #ifdef USE_POSIX_TIME
431
+
432
+ struct CUserTime
433
+ {
434
+ UInt64 Sum;
435
+ clock_t Prev;
436
+
437
+ void Init()
438
+ {
439
+ // Prev = clock();
440
+ Sum = 0;
441
+ Prev = 0;
442
+ Update();
443
+ Sum = 0;
444
+ }
445
+
446
+ void Update()
447
+ {
448
+ tms t;
449
+ /* clock_t res = */ times(&t);
450
+ clock_t newVal = t.tms_utime + t.tms_stime;
451
+ Sum += (UInt64)(newVal - Prev);
452
+ Prev = newVal;
453
+
454
+ /*
455
+ clock_t v = clock();
456
+ if (v != -1)
457
+ {
458
+ Sum += v - Prev;
459
+ Prev = v;
460
+ }
461
+ */
462
+ }
463
+ UInt64 GetUserTime()
464
+ {
465
+ Update();
466
+ return Sum;
467
+ }
468
+ };
469
+
470
+ #else
471
+
472
+
473
+ struct CUserTime
474
+ {
475
+ bool UseTick;
476
+ DWORD Prev_Tick;
477
+ UInt64 Prev;
478
+ UInt64 Sum;
479
+
480
+ void Init()
481
+ {
482
+ UseTick = false;
483
+ Prev_Tick = 0;
484
+ Prev = 0;
485
+ Sum = 0;
486
+ Update();
487
+ Sum = 0;
488
+ }
489
+ UInt64 GetUserTime()
490
+ {
491
+ Update();
492
+ return Sum;
493
+ }
494
+ void Update();
495
+ };
496
+
497
+ static inline UInt64 GetTime64(const FILETIME &t) { return ((UInt64)t.dwHighDateTime << 32) | t.dwLowDateTime; }
498
+
499
+ void CUserTime::Update()
500
+ {
501
+ DWORD new_Tick = GetTickCount();
502
+ FILETIME creationTime, exitTime, kernelTime, userTime;
503
+ if (!UseTick &&
504
+ #ifdef UNDER_CE
505
+ ::GetThreadTimes(::GetCurrentThread()
506
+ #else
507
+ ::GetProcessTimes(::GetCurrentProcess()
508
+ #endif
509
+ , &creationTime, &exitTime, &kernelTime, &userTime))
510
+ {
511
+ UInt64 newVal = GetTime64(userTime) + GetTime64(kernelTime);
512
+ Sum += newVal - Prev;
513
+ Prev = newVal;
514
+ }
515
+ else
516
+ {
517
+ UseTick = true;
518
+ Sum += (UInt64)(new_Tick - (DWORD)Prev_Tick) * 10000;
519
+ }
520
+ Prev_Tick = new_Tick;
521
+ }
522
+
523
+
524
+ #endif
525
+
526
+ static UInt64 GetUserFreq()
527
+ {
528
+ #ifdef USE_POSIX_TIME
529
+ // return CLOCKS_PER_SEC;
530
+ return (UInt64)sysconf(_SC_CLK_TCK);
531
+ #else
532
+ return 10000000;
533
+ #endif
534
+ }
535
+
536
+ class CBenchProgressStatus Z7_final
537
+ {
538
+ #ifndef Z7_ST
539
+ NSynchronization::CCriticalSection CS;
540
+ #endif
541
+ public:
542
+ HRESULT Res;
543
+ bool EncodeMode;
544
+ void SetResult(HRESULT res)
545
+ {
546
+ #ifndef Z7_ST
547
+ NSynchronization::CCriticalSectionLock lock(CS);
548
+ #endif
549
+ Res = res;
550
+ }
551
+ HRESULT GetResult()
552
+ {
553
+ #ifndef Z7_ST
554
+ NSynchronization::CCriticalSectionLock lock(CS);
555
+ #endif
556
+ return Res;
557
+ }
558
+ };
559
+
560
+ struct CBenchInfoCalc
561
+ {
562
+ CBenchInfo BenchInfo;
563
+ CUserTime UserTime;
564
+
565
+ void SetStartTime();
566
+ void SetFinishTime(CBenchInfo &dest);
567
+ };
568
+
569
+ void CBenchInfoCalc::SetStartTime()
570
+ {
571
+ BenchInfo.GlobalFreq = GetFreq();
572
+ BenchInfo.UserFreq = GetUserFreq();
573
+ BenchInfo.GlobalTime = ::GetTimeCount();
574
+ BenchInfo.UserTime = 0;
575
+ UserTime.Init();
576
+ }
577
+
578
+ void CBenchInfoCalc::SetFinishTime(CBenchInfo &dest)
579
+ {
580
+ dest = BenchInfo;
581
+ dest.GlobalTime = ::GetTimeCount() - BenchInfo.GlobalTime;
582
+ dest.UserTime = UserTime.GetUserTime();
583
+ }
584
+
585
+ class CBenchProgressInfo Z7_final:
586
+ public ICompressProgressInfo,
587
+ public CMyUnknownImp,
588
+ public CBenchInfoCalc
589
+ {
590
+ Z7_COM_UNKNOWN_IMP_0
591
+ Z7_IFACE_COM7_IMP(ICompressProgressInfo)
592
+ public:
593
+ CBenchProgressStatus *Status;
594
+ IBenchCallback *Callback;
595
+
596
+ CBenchProgressInfo(): Callback(NULL) {}
597
+ };
598
+
599
+
600
+ Z7_COM7F_IMF(CBenchProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize))
601
+ {
602
+ HRESULT res = Status->GetResult();
603
+ if (res != S_OK)
604
+ return res;
605
+ if (!Callback)
606
+ return res;
607
+
608
+ /*
609
+ static UInt64 inSizePrev = 0;
610
+ static UInt64 outSizePrev = 0;
611
+ UInt64 delta1 = 0, delta2 = 0, val1 = 0, val2 = 0;
612
+ if (inSize) { val1 = *inSize; delta1 = val1 - inSizePrev; inSizePrev = val1; }
613
+ if (outSize) { val2 = *outSize; delta2 = val2 - outSizePrev; outSizePrev = val2; }
614
+ UInt64 percents = delta2 * 1000;
615
+ if (delta1 != 0)
616
+ percents /= delta1;
617
+ printf("=== %7d %7d %7d %7d ratio = %4d\n",
618
+ (unsigned)(val1 >> 10), (unsigned)(delta1 >> 10),
619
+ (unsigned)(val2 >> 10), (unsigned)(delta2 >> 10),
620
+ (unsigned)percents);
621
+ */
622
+
623
+ CBenchInfo info;
624
+ SetFinishTime(info);
625
+ if (Status->EncodeMode)
626
+ {
627
+ info.UnpackSize = BenchInfo.UnpackSize + *inSize;
628
+ info.PackSize = BenchInfo.PackSize + *outSize;
629
+ res = Callback->SetEncodeResult(info, false);
630
+ }
631
+ else
632
+ {
633
+ info.PackSize = BenchInfo.PackSize + *inSize;
634
+ info.UnpackSize = BenchInfo.UnpackSize + *outSize;
635
+ res = Callback->SetDecodeResult(info, false);
636
+ }
637
+ if (res != S_OK)
638
+ Status->SetResult(res);
639
+ return res;
640
+ }
641
+
642
+ static const unsigned kSubBits = 8;
643
+
644
+ static unsigned GetLogSize(UInt64 size)
645
+ {
646
+ unsigned i = 0;
647
+ for (;;)
648
+ {
649
+ i++; size >>= 1; if (size == 0) break;
650
+ }
651
+ return i;
652
+ }
653
+
654
+
655
+ static UInt32 GetLogSize_Sub(UInt64 size)
656
+ {
657
+ if (size <= 1)
658
+ return 0;
659
+ const unsigned i = GetLogSize(size) - 1;
660
+ UInt32 v;
661
+ if (i <= kSubBits)
662
+ v = (UInt32)(size) << (kSubBits - i);
663
+ else
664
+ v = (UInt32)(size >> (i - kSubBits));
665
+ return ((UInt32)i << kSubBits) + (v & (((UInt32)1 << kSubBits) - 1));
666
+ }
667
+
668
+
669
+ static UInt64 Get_UInt64_from_double(double v)
670
+ {
671
+ const UInt64 kMaxVal = (UInt64)1 << 62;
672
+ if (v > (double)(Int64)kMaxVal)
673
+ return kMaxVal;
674
+ return (UInt64)v;
675
+ }
676
+
677
+ static UInt64 MyMultDiv64(UInt64 m1, UInt64 m2, UInt64 d)
678
+ {
679
+ if (d == 0)
680
+ d = 1;
681
+ const double v =
682
+ (double)(Int64)m1 *
683
+ (double)(Int64)m2 /
684
+ (double)(Int64)d;
685
+ return Get_UInt64_from_double(v);
686
+ /*
687
+ unsigned n1 = GetLogSize(m1);
688
+ unsigned n2 = GetLogSize(m2);
689
+ while (n1 + n2 > 64)
690
+ {
691
+ if (n1 >= n2)
692
+ {
693
+ m1 >>= 1;
694
+ n1--;
695
+ }
696
+ else
697
+ {
698
+ m2 >>= 1;
699
+ n2--;
700
+ }
701
+ d >>= 1;
702
+ }
703
+
704
+ if (d == 0)
705
+ d = 1;
706
+ return m1 * m2 / d;
707
+ */
708
+ }
709
+
710
+
711
+ UInt64 CBenchInfo::GetUsage() const
712
+ {
713
+ UInt64 userTime = UserTime;
714
+ UInt64 userFreq = UserFreq;
715
+ UInt64 globalTime = GlobalTime;
716
+ UInt64 globalFreq = GlobalFreq;
717
+
718
+ if (userFreq == 0)
719
+ userFreq = 1;
720
+ if (globalTime == 0)
721
+ globalTime = 1;
722
+
723
+ const double v =
724
+ ((double)(Int64)userTime / (double)(Int64)userFreq)
725
+ * ((double)(Int64)globalFreq / (double)(Int64)globalTime)
726
+ * (double)(Int64)kBenchmarkUsageMult;
727
+ return Get_UInt64_from_double(v);
728
+ /*
729
+ return MyMultDiv64(
730
+ MyMultDiv64(kBenchmarkUsageMult, userTime, userFreq),
731
+ globalFreq, globalTime);
732
+ */
733
+ }
734
+
735
+
736
+ UInt64 CBenchInfo::GetRatingPerUsage(UInt64 rating) const
737
+ {
738
+ if (UserTime == 0)
739
+ {
740
+ return 0;
741
+ // userTime = 1;
742
+ }
743
+ UInt64 globalFreq = GlobalFreq;
744
+ if (globalFreq == 0)
745
+ globalFreq = 1;
746
+
747
+ const double v =
748
+ ((double)(Int64)GlobalTime / (double)(Int64)globalFreq)
749
+ * ((double)(Int64)UserFreq / (double)(Int64)UserTime)
750
+ * (double)(Int64)rating;
751
+ return Get_UInt64_from_double(v);
752
+ /*
753
+ return MyMultDiv64(
754
+ MyMultDiv64(rating, UserFreq, UserTime),
755
+ GlobalTime, globalFreq);
756
+ */
757
+ }
758
+
759
+
760
+ UInt64 CBenchInfo::GetSpeed(UInt64 numUnits) const
761
+ {
762
+ return MyMultDiv64(numUnits, GlobalFreq, GlobalTime);
763
+ }
764
+
765
+ static UInt64 GetNumCommands_from_Size_and_Complexity(UInt64 size, Int32 complexity)
766
+ {
767
+ return complexity >= 0 ?
768
+ size * (UInt32)complexity :
769
+ size / (UInt32)(-complexity);
770
+ }
771
+
772
+ struct CBenchProps
773
+ {
774
+ bool LzmaRatingMode;
775
+
776
+ Int32 EncComplex;
777
+ Int32 DecComplexCompr;
778
+ Int32 DecComplexUnc;
779
+
780
+ unsigned KeySize;
781
+
782
+ CBenchProps():
783
+ LzmaRatingMode(false),
784
+ KeySize(0)
785
+ {}
786
+
787
+ void SetLzmaCompexity();
788
+
789
+ UInt64 GetNumCommands_Enc(UInt64 unpackSize) const
790
+ {
791
+ const UInt32 kMinSize = 100;
792
+ if (unpackSize < kMinSize)
793
+ unpackSize = kMinSize;
794
+ return GetNumCommands_from_Size_and_Complexity(unpackSize, EncComplex);
795
+ }
796
+
797
+ UInt64 GetNumCommands_Dec(UInt64 packSize, UInt64 unpackSize) const
798
+ {
799
+ return
800
+ GetNumCommands_from_Size_and_Complexity(packSize, DecComplexCompr) +
801
+ GetNumCommands_from_Size_and_Complexity(unpackSize, DecComplexUnc);
802
+ }
803
+
804
+ UInt64 GetRating_Enc(UInt64 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size) const;
805
+ UInt64 GetRating_Dec(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations) const;
806
+ };
807
+
808
+ void CBenchProps::SetLzmaCompexity()
809
+ {
810
+ EncComplex = 1200;
811
+ DecComplexUnc = 4;
812
+ DecComplexCompr = 190;
813
+ LzmaRatingMode = true;
814
+ }
815
+
816
+ UInt64 CBenchProps::GetRating_Enc(UInt64 dictSize, UInt64 elapsedTime, UInt64 freq, UInt64 size) const
817
+ {
818
+ if (dictSize < (1 << kBenchMinDicLogSize))
819
+ dictSize = (1 << kBenchMinDicLogSize);
820
+ Int32 encComplex = EncComplex;
821
+ if (LzmaRatingMode)
822
+ {
823
+ /*
824
+ for (UInt64 uu = 0; uu < (UInt64)0xf << 60;)
825
+ {
826
+ unsigned rr = GetLogSize_Sub(uu);
827
+ printf("\n%16I64x , log = %4x", uu, rr);
828
+ uu += 1;
829
+ uu += uu / 50;
830
+ }
831
+ */
832
+ // throw 1;
833
+ const UInt32 t = GetLogSize_Sub(dictSize) - (kBenchMinDicLogSize << kSubBits);
834
+ encComplex = 870 + ((t * t * 5) >> (2 * kSubBits));
835
+ }
836
+ const UInt64 numCommands = GetNumCommands_from_Size_and_Complexity(size, encComplex);
837
+ return MyMultDiv64(numCommands, freq, elapsedTime);
838
+ }
839
+
840
+ UInt64 CBenchProps::GetRating_Dec(UInt64 elapsedTime, UInt64 freq, UInt64 outSize, UInt64 inSize, UInt64 numIterations) const
841
+ {
842
+ const UInt64 numCommands = GetNumCommands_Dec(inSize, outSize) * numIterations;
843
+ return MyMultDiv64(numCommands, freq, elapsedTime);
844
+ }
845
+
846
+
847
+
848
+ UInt64 CBenchInfo::GetRating_LzmaEnc(UInt64 dictSize) const
849
+ {
850
+ CBenchProps props;
851
+ props.SetLzmaCompexity();
852
+ return props.GetRating_Enc(dictSize, GlobalTime, GlobalFreq, UnpackSize * NumIterations);
853
+ }
854
+
855
+ UInt64 CBenchInfo::GetRating_LzmaDec() const
856
+ {
857
+ CBenchProps props;
858
+ props.SetLzmaCompexity();
859
+ return props.GetRating_Dec(GlobalTime, GlobalFreq, UnpackSize, PackSize, NumIterations);
860
+ }
861
+
862
+
863
+ #ifndef Z7_ST
864
+
865
+ #define NUM_CPU_LEVELS_MAX 3
866
+
867
+ struct CAffinityMode
868
+ {
869
+ unsigned NumBundleThreads;
870
+ unsigned NumLevels;
871
+ unsigned NumCoreThreads;
872
+ unsigned NumCores;
873
+ // unsigned DivideNum;
874
+ UInt32 Sizes[NUM_CPU_LEVELS_MAX];
875
+
876
+ void SetLevels(unsigned numCores, unsigned numCoreThreads);
877
+ DWORD_PTR GetAffinityMask(UInt32 bundleIndex, CCpuSet *cpuSet) const;
878
+ bool NeedAffinity() const { return NumBundleThreads != 0; }
879
+
880
+ WRes CreateThread_WithAffinity(NWindows::CThread &thread, THREAD_FUNC_TYPE startAddress, LPVOID parameter, UInt32 bundleIndex) const
881
+ {
882
+ if (NeedAffinity())
883
+ {
884
+ CCpuSet cpuSet;
885
+ GetAffinityMask(bundleIndex, &cpuSet);
886
+ return thread.Create_With_CpuSet(startAddress, parameter, &cpuSet);
887
+ }
888
+ return thread.Create(startAddress, parameter);
889
+ }
890
+
891
+ CAffinityMode():
892
+ NumBundleThreads(0),
893
+ NumLevels(0),
894
+ NumCoreThreads(1)
895
+ // DivideNum(1)
896
+ {}
897
+ };
898
+
899
+ void CAffinityMode::SetLevels(unsigned numCores, unsigned numCoreThreads)
900
+ {
901
+ NumCores = numCores;
902
+ NumCoreThreads = numCoreThreads;
903
+ NumLevels = 0;
904
+ if (numCoreThreads == 0 || numCores == 0 || numCores % numCoreThreads != 0)
905
+ return;
906
+ UInt32 c = numCores / numCoreThreads;
907
+ UInt32 c2 = 1;
908
+ while ((c & 1) == 0)
909
+ {
910
+ c >>= 1;
911
+ c2 <<= 1;
912
+ }
913
+ if (c2 != 1)
914
+ Sizes[NumLevels++] = c2;
915
+ if (c != 1)
916
+ Sizes[NumLevels++] = c;
917
+ if (numCoreThreads != 1)
918
+ Sizes[NumLevels++] = numCoreThreads;
919
+ if (NumLevels == 0)
920
+ Sizes[NumLevels++] = 1;
921
+
922
+ /*
923
+ printf("\n Cores:");
924
+ for (unsigned i = 0; i < NumLevels; i++)
925
+ {
926
+ printf(" %d", Sizes[i]);
927
+ }
928
+ printf("\n");
929
+ */
930
+ }
931
+
932
+
933
+ DWORD_PTR CAffinityMode::GetAffinityMask(UInt32 bundleIndex, CCpuSet *cpuSet) const
934
+ {
935
+ CpuSet_Zero(cpuSet);
936
+
937
+ if (NumLevels == 0)
938
+ return 0;
939
+
940
+ // printf("\n%2d", bundleIndex);
941
+
942
+ /*
943
+ UInt32 low = 0;
944
+ if (DivideNum != 1)
945
+ {
946
+ low = bundleIndex % DivideNum;
947
+ bundleIndex /= DivideNum;
948
+ }
949
+ */
950
+
951
+ UInt32 numGroups = NumCores / NumBundleThreads;
952
+ UInt32 m = bundleIndex % numGroups;
953
+ UInt32 v = 0;
954
+ for (unsigned i = 0; i < NumLevels; i++)
955
+ {
956
+ UInt32 size = Sizes[i];
957
+ while ((size & 1) == 0)
958
+ {
959
+ v *= 2;
960
+ v |= (m & 1);
961
+ m >>= 1;
962
+ size >>= 1;
963
+ }
964
+ v *= size;
965
+ v += m % size;
966
+ m /= size;
967
+ }
968
+
969
+ // UInt32 nb = NumBundleThreads / DivideNum;
970
+ UInt32 nb = NumBundleThreads;
971
+
972
+ DWORD_PTR mask = ((DWORD_PTR)1 << nb) - 1;
973
+ // v += low;
974
+ mask <<= v;
975
+
976
+ // printf(" %2d %8x \n ", v, (unsigned)mask);
977
+ #ifdef _WIN32
978
+ *cpuSet = mask;
979
+ #else
980
+ {
981
+ for (unsigned k = 0; k < nb; k++)
982
+ CpuSet_Set(cpuSet, v + k);
983
+ }
984
+ #endif
985
+
986
+ return mask;
987
+ }
988
+
989
+
990
+ struct CBenchSyncCommon
991
+ {
992
+ bool ExitMode;
993
+ NSynchronization::CManualResetEvent StartEvent;
994
+
995
+ CBenchSyncCommon(): ExitMode(false) {}
996
+ };
997
+
998
+ #endif
999
+
1000
+
1001
+
1002
+ enum E_CheckCrcMode
1003
+ {
1004
+ k_CheckCrcMode_Never = 0,
1005
+ k_CheckCrcMode_Always = 1,
1006
+ k_CheckCrcMode_FirstPass = 2
1007
+ };
1008
+
1009
+ class CEncoderInfo;
1010
+
1011
+ class CEncoderInfo Z7_final
1012
+ {
1013
+ Z7_CLASS_NO_COPY(CEncoderInfo)
1014
+
1015
+ public:
1016
+
1017
+ #ifndef Z7_ST
1018
+ NWindows::CThread thread[2];
1019
+ NSynchronization::CManualResetEvent ReadyEvent;
1020
+ UInt32 NumDecoderSubThreads;
1021
+ CBenchSyncCommon *Common;
1022
+ UInt32 EncoderIndex;
1023
+ UInt32 NumEncoderInternalThreads;
1024
+ CAffinityMode AffinityMode;
1025
+ bool IsGlobalMtMode; // if more than one benchmark encoder threads
1026
+ #endif
1027
+
1028
+ CMyComPtr<ICompressCoder> _encoder;
1029
+ CMyComPtr<ICompressFilter> _encoderFilter;
1030
+ CBenchProgressInfo *progressInfoSpec[2];
1031
+ CMyComPtr<ICompressProgressInfo> progressInfo[2];
1032
+ UInt64 NumIterations;
1033
+
1034
+ UInt32 Salt;
1035
+
1036
+ #ifdef USE_ALLOCA
1037
+ size_t AllocaSize;
1038
+ #endif
1039
+
1040
+ unsigned KeySize;
1041
+ Byte _key[32];
1042
+ Byte _iv[16];
1043
+
1044
+ HRESULT Set_Key_and_IV(ICryptoProperties *cp)
1045
+ {
1046
+ RINOK(cp->SetKey(_key, KeySize))
1047
+ return cp->SetInitVector(_iv, sizeof(_iv));
1048
+ }
1049
+
1050
+ Byte _psw[16];
1051
+
1052
+ bool CheckCrc_Enc; /* = 1, if we want to check packed data crcs after each pass
1053
+ used for filter and usual coders */
1054
+ bool UseRealData_Enc; /* = 1, if we want to use only original data for each pass
1055
+ used only for filter */
1056
+ E_CheckCrcMode CheckCrcMode_Dec;
1057
+
1058
+ struct CDecoderInfo
1059
+ {
1060
+ CEncoderInfo *Encoder;
1061
+ UInt32 DecoderIndex;
1062
+ bool CallbackMode;
1063
+
1064
+ #ifdef USE_ALLOCA
1065
+ size_t AllocaSize;
1066
+ #endif
1067
+ };
1068
+ CDecoderInfo decodersInfo[2];
1069
+
1070
+ CMyComPtr<ICompressCoder> _decoders[2];
1071
+ CMyComPtr<ICompressFilter> _decoderFilter;
1072
+
1073
+ HRESULT Results[2];
1074
+ CBenchmarkOutStream *outStreamSpec;
1075
+ CMyComPtr<ISequentialOutStream> outStream;
1076
+ IBenchCallback *callback;
1077
+ IBenchPrintCallback *printCallback;
1078
+ UInt32 crc;
1079
+ size_t kBufferSize;
1080
+ size_t compressedSize;
1081
+ const Byte *uncompressedDataPtr;
1082
+
1083
+ const Byte *fileData;
1084
+ CBenchRandomGenerator rg;
1085
+
1086
+ CMidAlignedBuffer rgCopy; // it must be 16-byte aligned !!!
1087
+
1088
+ // CBenchmarkOutStream *propStreamSpec;
1089
+ Byte propsData[kMaxMethodPropSize];
1090
+ CBufPtrSeqOutStream *propStreamSpec;
1091
+ CMyComPtr<ISequentialOutStream> propStream;
1092
+
1093
+ unsigned generateDictBits;
1094
+ COneMethodInfo _method;
1095
+
1096
+ // for decode
1097
+ size_t _uncompressedDataSize;
1098
+
1099
+ HRESULT Generate();
1100
+ HRESULT Encode();
1101
+ HRESULT Decode(UInt32 decoderIndex);
1102
+
1103
+ CEncoderInfo():
1104
+ #ifndef Z7_ST
1105
+ Common(NULL),
1106
+ IsGlobalMtMode(true),
1107
+ #endif
1108
+ Salt(0),
1109
+ KeySize(0),
1110
+ CheckCrc_Enc(true),
1111
+ UseRealData_Enc(true),
1112
+ CheckCrcMode_Dec(k_CheckCrcMode_Always),
1113
+ outStreamSpec(NULL),
1114
+ callback(NULL),
1115
+ printCallback(NULL),
1116
+ fileData(NULL),
1117
+ propStreamSpec(NULL)
1118
+ {}
1119
+
1120
+ #ifndef Z7_ST
1121
+
1122
+ static THREAD_FUNC_DECL EncodeThreadFunction(void *param)
1123
+ {
1124
+ HRESULT res;
1125
+ CEncoderInfo *encoder = (CEncoderInfo *)param;
1126
+ try
1127
+ {
1128
+ #ifdef USE_ALLOCA
1129
+ alloca(encoder->AllocaSize);
1130
+ #endif
1131
+
1132
+ res = encoder->Encode();
1133
+ }
1134
+ catch(...)
1135
+ {
1136
+ res = E_FAIL;
1137
+ }
1138
+ encoder->Results[0] = res;
1139
+ if (res != S_OK)
1140
+ encoder->progressInfoSpec[0]->Status->SetResult(res);
1141
+ encoder->ReadyEvent.Set();
1142
+ return THREAD_FUNC_RET_ZERO;
1143
+ }
1144
+
1145
+ static THREAD_FUNC_DECL DecodeThreadFunction(void *param)
1146
+ {
1147
+ CDecoderInfo *decoder = (CDecoderInfo *)param;
1148
+
1149
+ #ifdef USE_ALLOCA
1150
+ alloca(decoder->AllocaSize);
1151
+ // printf("\nalloca=%d\n", (unsigned)decoder->AllocaSize);
1152
+ #endif
1153
+
1154
+ CEncoderInfo *encoder = decoder->Encoder;
1155
+ encoder->Results[decoder->DecoderIndex] = encoder->Decode(decoder->DecoderIndex);
1156
+ return THREAD_FUNC_RET_ZERO;
1157
+ }
1158
+
1159
+ HRESULT CreateEncoderThread()
1160
+ {
1161
+ WRes res = 0;
1162
+ if (!ReadyEvent.IsCreated())
1163
+ res = ReadyEvent.Create();
1164
+ if (res == 0)
1165
+ res = AffinityMode.CreateThread_WithAffinity(thread[0], EncodeThreadFunction, this,
1166
+ EncoderIndex);
1167
+ return HRESULT_FROM_WIN32(res);
1168
+ }
1169
+
1170
+ HRESULT CreateDecoderThread(unsigned index, bool callbackMode
1171
+ #ifdef USE_ALLOCA
1172
+ , size_t allocaSize
1173
+ #endif
1174
+ )
1175
+ {
1176
+ CDecoderInfo &decoder = decodersInfo[index];
1177
+ decoder.DecoderIndex = index;
1178
+ decoder.Encoder = this;
1179
+
1180
+ #ifdef USE_ALLOCA
1181
+ decoder.AllocaSize = allocaSize;
1182
+ #endif
1183
+
1184
+ decoder.CallbackMode = callbackMode;
1185
+
1186
+ WRes res = AffinityMode.CreateThread_WithAffinity(thread[index], DecodeThreadFunction, &decoder,
1187
+ // EncoderIndex * NumEncoderInternalThreads + index
1188
+ EncoderIndex
1189
+ );
1190
+
1191
+ return HRESULT_FROM_WIN32(res);
1192
+ }
1193
+
1194
+ #endif
1195
+ };
1196
+
1197
+
1198
+
1199
+
1200
+ static size_t GetBenchCompressedSize(size_t bufferSize)
1201
+ {
1202
+ return kCompressedAdditionalSize + bufferSize + bufferSize / 16;
1203
+ // kBufferSize / 2;
1204
+ }
1205
+
1206
+
1207
+ HRESULT CEncoderInfo::Generate()
1208
+ {
1209
+ const COneMethodInfo &method = _method;
1210
+
1211
+ // we need extra space, if input data is already compressed
1212
+ const size_t kCompressedBufferSize = _encoderFilter ?
1213
+ kBufferSize :
1214
+ GetBenchCompressedSize(kBufferSize);
1215
+
1216
+ if (kCompressedBufferSize < kBufferSize)
1217
+ return E_FAIL;
1218
+
1219
+ uncompressedDataPtr = fileData;
1220
+ if (fileData)
1221
+ {
1222
+ #if !defined(Z7_ST)
1223
+ if (IsGlobalMtMode)
1224
+ {
1225
+ /* we copy the data to local buffer of thread to eliminate
1226
+ using of shared buffer by different threads */
1227
+ ALLOC_WITH_HRESULT(&rg, kBufferSize)
1228
+ memcpy((Byte *)rg, fileData, kBufferSize);
1229
+ uncompressedDataPtr = (const Byte *)rg;
1230
+ }
1231
+ #endif
1232
+ }
1233
+ else
1234
+ {
1235
+ ALLOC_WITH_HRESULT(&rg, kBufferSize)
1236
+ // DWORD ttt = GetTickCount();
1237
+ if (generateDictBits == 0)
1238
+ rg.GenerateSimpleRandom(Salt);
1239
+ else
1240
+ {
1241
+ if (generateDictBits >= sizeof(size_t) * 8
1242
+ && kBufferSize > ((size_t)1 << (sizeof(size_t) * 8 - 1)))
1243
+ return E_INVALIDARG;
1244
+ rg.GenerateLz(generateDictBits, Salt);
1245
+ // return E_ABORT; // for debug
1246
+ }
1247
+ // printf("\n%d\n ", GetTickCount() - ttt);
1248
+
1249
+ crc = CrcCalc((const Byte *)rg, rg.Size());
1250
+ uncompressedDataPtr = (const Byte *)rg;
1251
+ }
1252
+
1253
+ if (!outStream)
1254
+ {
1255
+ outStreamSpec = new CBenchmarkOutStream;
1256
+ outStream = outStreamSpec;
1257
+ }
1258
+
1259
+ ALLOC_WITH_HRESULT(outStreamSpec, kCompressedBufferSize)
1260
+
1261
+ if (_encoderFilter)
1262
+ {
1263
+ /* we try to reduce the number of memcpy() in main encoding loop.
1264
+ so we copy data to temp buffers here */
1265
+ ALLOC_WITH_HRESULT(&rgCopy, kBufferSize)
1266
+ memcpy((Byte *)*outStreamSpec, uncompressedDataPtr, kBufferSize);
1267
+ memcpy((Byte *)rgCopy, uncompressedDataPtr, kBufferSize);
1268
+ }
1269
+
1270
+ if (!propStream)
1271
+ {
1272
+ propStreamSpec = new CBufPtrSeqOutStream; // CBenchmarkOutStream;
1273
+ propStream = propStreamSpec;
1274
+ }
1275
+ // ALLOC_WITH_HRESULT_2(propStreamSpec, kMaxMethodPropSize);
1276
+ // propStreamSpec->Init(true, false);
1277
+ propStreamSpec->Init(propsData, sizeof(propsData));
1278
+
1279
+
1280
+ CMyComPtr<IUnknown> coder;
1281
+ if (_encoderFilter)
1282
+ coder = _encoderFilter;
1283
+ else
1284
+ coder = _encoder;
1285
+ {
1286
+ CMyComPtr<ICompressSetCoderProperties> scp;
1287
+ coder.QueryInterface(IID_ICompressSetCoderProperties, &scp);
1288
+ if (scp)
1289
+ {
1290
+ const UInt64 reduceSize = kBufferSize;
1291
+
1292
+ /* in posix new thread uses same affinity as parent thread,
1293
+ so we don't need to send affinity to coder in posix */
1294
+ UInt64 affMask;
1295
+ #if !defined(Z7_ST) && defined(_WIN32)
1296
+ {
1297
+ CCpuSet cpuSet;
1298
+ affMask = AffinityMode.GetAffinityMask(EncoderIndex, &cpuSet);
1299
+ }
1300
+ #else
1301
+ affMask = 0;
1302
+ #endif
1303
+ // affMask <<= 3; // debug line: to test no affinity in coder;
1304
+ // affMask = 0;
1305
+
1306
+ RINOK(method.SetCoderProps_DSReduce_Aff(scp, &reduceSize, (affMask != 0 ? &affMask : NULL)))
1307
+ }
1308
+ else
1309
+ {
1310
+ if (method.AreThereNonOptionalProps())
1311
+ return E_INVALIDARG;
1312
+ }
1313
+
1314
+ CMyComPtr<ICompressWriteCoderProperties> writeCoderProps;
1315
+ coder.QueryInterface(IID_ICompressWriteCoderProperties, &writeCoderProps);
1316
+ if (writeCoderProps)
1317
+ {
1318
+ RINOK(writeCoderProps->WriteCoderProperties(propStream))
1319
+ }
1320
+
1321
+ {
1322
+ CMyComPtr<ICryptoSetPassword> sp;
1323
+ coder.QueryInterface(IID_ICryptoSetPassword, &sp);
1324
+ if (sp)
1325
+ {
1326
+ RINOK(sp->CryptoSetPassword(_psw, sizeof(_psw)))
1327
+
1328
+ // we must call encoding one time to calculate password key for key cache.
1329
+ // it must be after WriteCoderProperties!
1330
+ Byte temp[16];
1331
+ memset(temp, 0, sizeof(temp));
1332
+
1333
+ if (_encoderFilter)
1334
+ {
1335
+ _encoderFilter->Init();
1336
+ _encoderFilter->Filter(temp, sizeof(temp));
1337
+ }
1338
+ else
1339
+ {
1340
+ CBenchmarkInStream *inStreamSpec = new CBenchmarkInStream;
1341
+ CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
1342
+ inStreamSpec->Init(temp, sizeof(temp));
1343
+
1344
+ CCrcOutStream *crcStreamSpec = new CCrcOutStream;
1345
+ CMyComPtr<ISequentialOutStream> crcStream = crcStreamSpec;
1346
+ crcStreamSpec->Init();
1347
+
1348
+ RINOK(_encoder->Code(inStream, crcStream, NULL, NULL, NULL))
1349
+ }
1350
+ }
1351
+ }
1352
+ }
1353
+
1354
+ return S_OK;
1355
+ }
1356
+
1357
+
1358
+ static void My_FilterBench(ICompressFilter *filter, Byte *data, size_t size, UInt32 *crc)
1359
+ {
1360
+ while (size != 0)
1361
+ {
1362
+ UInt32 cur = crc ? 1 << 17 : 1 << 24;
1363
+ if (cur > size)
1364
+ cur = (UInt32)size;
1365
+ UInt32 processed = filter->Filter(data, cur);
1366
+ /* if (processed > size) (in AES filter), we must fill last block with zeros.
1367
+ but it is not important for benchmark. So we just copy that data without filtering.
1368
+ if (processed == 0) then filter can't process more */
1369
+ if (processed > size || processed == 0)
1370
+ processed = (UInt32)size;
1371
+ if (crc)
1372
+ *crc = CrcUpdate(*crc, data, processed);
1373
+ data += processed;
1374
+ size -= processed;
1375
+ }
1376
+ }
1377
+
1378
+
1379
+ HRESULT CEncoderInfo::Encode()
1380
+ {
1381
+ // printf("\nCEncoderInfo::Generate\n");
1382
+
1383
+ RINOK(Generate())
1384
+
1385
+ // printf("\n2222\n");
1386
+
1387
+ #ifndef Z7_ST
1388
+ if (Common)
1389
+ {
1390
+ Results[0] = S_OK;
1391
+ WRes wres = ReadyEvent.Set();
1392
+ if (wres == 0)
1393
+ wres = Common->StartEvent.Lock();
1394
+ if (wres != 0)
1395
+ return HRESULT_FROM_WIN32(wres);
1396
+ if (Common->ExitMode)
1397
+ return S_OK;
1398
+ }
1399
+ else
1400
+ #endif
1401
+ {
1402
+ CBenchProgressInfo *bpi = progressInfoSpec[0];
1403
+ bpi->SetStartTime();
1404
+ }
1405
+
1406
+
1407
+ CBenchInfo &bi = progressInfoSpec[0]->BenchInfo;
1408
+ bi.UnpackSize = 0;
1409
+ bi.PackSize = 0;
1410
+ CMyComPtr<ICryptoProperties> cp;
1411
+ CMyComPtr<IUnknown> coder;
1412
+ if (_encoderFilter)
1413
+ coder = _encoderFilter;
1414
+ else
1415
+ coder = _encoder;
1416
+ coder.QueryInterface(IID_ICryptoProperties, &cp);
1417
+ CBenchmarkInStream *inStreamSpec = new CBenchmarkInStream;
1418
+ CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
1419
+
1420
+ if (cp)
1421
+ {
1422
+ RINOK(Set_Key_and_IV(cp))
1423
+ }
1424
+
1425
+ compressedSize = 0;
1426
+ if (_encoderFilter)
1427
+ compressedSize = kBufferSize;
1428
+
1429
+ // CBenchmarkOutStream *outStreamSpec = this->outStreamSpec;
1430
+ UInt64 prev = 0;
1431
+
1432
+ const UInt32 mask = (CheckCrc_Enc ? 0 : 0xFFFF);
1433
+ const bool useCrc = (mask < NumIterations);
1434
+ bool crcPrev_defined = false;
1435
+ UInt32 crcPrev = 0;
1436
+
1437
+ bool useRealData_Enc = UseRealData_Enc;
1438
+ bool data_Was_Changed = false;
1439
+ if (useRealData_Enc)
1440
+ {
1441
+ /* we want memcpy() for each iteration including first iteration.
1442
+ So results will be equal for different number of iterations */
1443
+ data_Was_Changed = true;
1444
+ }
1445
+
1446
+ const UInt64 numIterations = NumIterations;
1447
+ UInt64 i = numIterations;
1448
+ // printCallback->NewLine();
1449
+
1450
+ while (i != 0)
1451
+ {
1452
+ i--;
1453
+ if (printCallback && bi.UnpackSize - prev >= (1 << 26))
1454
+ {
1455
+ prev = bi.UnpackSize;
1456
+ RINOK(printCallback->CheckBreak())
1457
+ }
1458
+
1459
+ /*
1460
+ CBenchInfo info;
1461
+ progressInfoSpec[0]->SetStartTime();
1462
+ */
1463
+
1464
+ bool calcCrc = false;
1465
+ if (useCrc)
1466
+ calcCrc = (((UInt32)i & mask) == 0);
1467
+
1468
+ if (_encoderFilter)
1469
+ {
1470
+ Byte *filterData = rgCopy;
1471
+ if (i == numIterations - 1 || calcCrc || useRealData_Enc)
1472
+ {
1473
+ // printf("\nfilterData = (Byte *)*outStreamSpec;\n");
1474
+ filterData = (Byte *)*outStreamSpec;
1475
+ if (data_Was_Changed)
1476
+ {
1477
+ // printf("\nmemcpy(filterData, uncompressedDataPtr\n");
1478
+ memcpy(filterData, uncompressedDataPtr, kBufferSize);
1479
+ }
1480
+ data_Was_Changed = true;
1481
+ }
1482
+ _encoderFilter->Init();
1483
+ if (calcCrc)
1484
+ {
1485
+ // printf("\nInitCrc\n");
1486
+ outStreamSpec->InitCrc();
1487
+ }
1488
+ // printf("\nMy_FilterBench\n");
1489
+ My_FilterBench(_encoderFilter, filterData, kBufferSize,
1490
+ calcCrc ? &outStreamSpec->Crc : NULL);
1491
+ }
1492
+ else
1493
+ {
1494
+ outStreamSpec->Init(true, calcCrc); // write real data for speed consistency at any number of iterations
1495
+ inStreamSpec->Init(uncompressedDataPtr, kBufferSize);
1496
+ RINOK(_encoder->Code(inStream, outStream, NULL, NULL, progressInfo[0]))
1497
+ if (!inStreamSpec->WasFinished())
1498
+ return E_FAIL;
1499
+ if (compressedSize != outStreamSpec->Pos)
1500
+ {
1501
+ if (compressedSize != 0)
1502
+ return E_FAIL;
1503
+ compressedSize = outStreamSpec->Pos;
1504
+ }
1505
+ }
1506
+
1507
+ // outStreamSpec->Print();
1508
+
1509
+ if (calcCrc)
1510
+ {
1511
+ const UInt32 crc2 = CRC_GET_DIGEST(outStreamSpec->Crc);
1512
+ if (crcPrev_defined && crcPrev != crc2)
1513
+ return E_FAIL;
1514
+ crcPrev = crc2;
1515
+ crcPrev_defined = true;
1516
+ }
1517
+
1518
+ bi.UnpackSize += kBufferSize;
1519
+ bi.PackSize += compressedSize;
1520
+
1521
+ /*
1522
+ {
1523
+ progressInfoSpec[0]->SetFinishTime(info);
1524
+ info.UnpackSize = 0;
1525
+ info.PackSize = 0;
1526
+ info.NumIterations = 1;
1527
+
1528
+ info.UnpackSize = kBufferSize;
1529
+ info.PackSize = compressedSize;
1530
+ // printf("\n%7d\n", encoder.compressedSize);
1531
+
1532
+ RINOK(callback->SetEncodeResult(info, true))
1533
+ printCallback->NewLine();
1534
+ }
1535
+ */
1536
+
1537
+ }
1538
+
1539
+ _encoder.Release();
1540
+ _encoderFilter.Release();
1541
+ return S_OK;
1542
+ }
1543
+
1544
+
1545
+ HRESULT CEncoderInfo::Decode(UInt32 decoderIndex)
1546
+ {
1547
+ CBenchmarkInStream *inStreamSpec = new CBenchmarkInStream;
1548
+ CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
1549
+ CMyComPtr<ICompressCoder> &decoder = _decoders[decoderIndex];
1550
+ CMyComPtr<IUnknown> coder;
1551
+ if (_decoderFilter)
1552
+ {
1553
+ if (decoderIndex != 0)
1554
+ return E_FAIL;
1555
+ coder = _decoderFilter;
1556
+ }
1557
+ else
1558
+ coder = decoder;
1559
+
1560
+ // printf("\ndecoderIndex = %d, stack = %p", decoderIndex, &coder);
1561
+
1562
+ CMyComPtr<ICompressSetDecoderProperties2> setDecProps;
1563
+ coder.QueryInterface(IID_ICompressSetDecoderProperties2, &setDecProps);
1564
+ if (!setDecProps && propStreamSpec->GetPos() != 0)
1565
+ return E_FAIL;
1566
+
1567
+ CCrcOutStream *crcOutStreamSpec = new CCrcOutStream;
1568
+ CMyComPtr<ISequentialOutStream> crcOutStream = crcOutStreamSpec;
1569
+
1570
+ CBenchProgressInfo *pi = progressInfoSpec[decoderIndex];
1571
+ pi->BenchInfo.UnpackSize = 0;
1572
+ pi->BenchInfo.PackSize = 0;
1573
+
1574
+ #ifndef Z7_ST
1575
+ {
1576
+ CMyComPtr<ICompressSetCoderMt> setCoderMt;
1577
+ coder.QueryInterface(IID_ICompressSetCoderMt, &setCoderMt);
1578
+ if (setCoderMt)
1579
+ {
1580
+ RINOK(setCoderMt->SetNumberOfThreads(NumDecoderSubThreads))
1581
+ }
1582
+ }
1583
+ #endif
1584
+
1585
+ CMyComPtr<ICompressSetCoderProperties> scp;
1586
+ coder.QueryInterface(IID_ICompressSetCoderProperties, &scp);
1587
+ if (scp)
1588
+ {
1589
+ const UInt64 reduceSize = _uncompressedDataSize;
1590
+ RINOK(_method.SetCoderProps(scp, &reduceSize))
1591
+ }
1592
+
1593
+ CMyComPtr<ICryptoProperties> cp;
1594
+ coder.QueryInterface(IID_ICryptoProperties, &cp);
1595
+
1596
+ if (setDecProps)
1597
+ {
1598
+ RINOK(setDecProps->SetDecoderProperties2(
1599
+ /* (const Byte *)*propStreamSpec, */
1600
+ propsData,
1601
+ (UInt32)propStreamSpec->GetPos()))
1602
+ }
1603
+
1604
+ {
1605
+ CMyComPtr<ICryptoSetPassword> sp;
1606
+ coder.QueryInterface(IID_ICryptoSetPassword, &sp);
1607
+ if (sp)
1608
+ {
1609
+ RINOK(sp->CryptoSetPassword(_psw, sizeof(_psw)))
1610
+ }
1611
+ }
1612
+
1613
+ UInt64 prev = 0;
1614
+
1615
+ if (cp)
1616
+ {
1617
+ RINOK(Set_Key_and_IV(cp))
1618
+ }
1619
+
1620
+ CMyComPtr<ICompressSetFinishMode> setFinishMode;
1621
+
1622
+ if (_decoderFilter)
1623
+ {
1624
+ if (compressedSize > rgCopy.Size())
1625
+ return E_FAIL;
1626
+ }
1627
+ else
1628
+ {
1629
+ decoder->QueryInterface(IID_ICompressSetFinishMode, (void **)&setFinishMode);
1630
+ }
1631
+
1632
+ const UInt64 numIterations = NumIterations;
1633
+ const E_CheckCrcMode checkCrcMode = CheckCrcMode_Dec;
1634
+
1635
+ for (UInt64 i = 0; i < numIterations; i++)
1636
+ {
1637
+ if (printCallback && pi->BenchInfo.UnpackSize - prev >= (1 << 26))
1638
+ {
1639
+ RINOK(printCallback->CheckBreak())
1640
+ prev = pi->BenchInfo.UnpackSize;
1641
+ }
1642
+
1643
+ const UInt64 outSize = kBufferSize;
1644
+ bool calcCrc = (checkCrcMode != k_CheckCrcMode_Never);
1645
+
1646
+ crcOutStreamSpec->Init();
1647
+
1648
+ if (_decoderFilter)
1649
+ {
1650
+ Byte *filterData = (Byte *)*outStreamSpec;
1651
+ if (calcCrc)
1652
+ {
1653
+ calcCrc = (i == 0);
1654
+ if (checkCrcMode == k_CheckCrcMode_Always)
1655
+ {
1656
+ calcCrc = true;
1657
+ memcpy((Byte *)rgCopy, (const Byte *)*outStreamSpec, compressedSize);
1658
+ filterData = rgCopy;
1659
+ }
1660
+ }
1661
+ _decoderFilter->Init();
1662
+ My_FilterBench(_decoderFilter, filterData, compressedSize,
1663
+ calcCrc ? &crcOutStreamSpec->Crc : NULL);
1664
+ }
1665
+ else
1666
+ {
1667
+ crcOutStreamSpec->CalcCrc = calcCrc;
1668
+ inStreamSpec->Init((const Byte *)*outStreamSpec, compressedSize);
1669
+
1670
+ if (setFinishMode)
1671
+ {
1672
+ RINOK(setFinishMode->SetFinishMode(BoolToUInt(true)))
1673
+ }
1674
+
1675
+ RINOK(decoder->Code(inStream, crcOutStream, NULL, &outSize, progressInfo[decoderIndex]))
1676
+
1677
+ if (setFinishMode)
1678
+ {
1679
+ if (!inStreamSpec->WasFinished())
1680
+ return S_FALSE;
1681
+
1682
+ CMyComPtr<ICompressGetInStreamProcessedSize> getInStreamProcessedSize;
1683
+ decoder.QueryInterface(IID_ICompressGetInStreamProcessedSize, (void **)&getInStreamProcessedSize);
1684
+
1685
+ if (getInStreamProcessedSize)
1686
+ {
1687
+ UInt64 processed;
1688
+ RINOK(getInStreamProcessedSize->GetInStreamProcessedSize(&processed))
1689
+ if (processed != compressedSize)
1690
+ return S_FALSE;
1691
+ }
1692
+ }
1693
+
1694
+ if (crcOutStreamSpec->Pos != outSize)
1695
+ return S_FALSE;
1696
+ }
1697
+
1698
+ if (calcCrc && CRC_GET_DIGEST(crcOutStreamSpec->Crc) != crc)
1699
+ return S_FALSE;
1700
+
1701
+ pi->BenchInfo.UnpackSize += kBufferSize;
1702
+ pi->BenchInfo.PackSize += compressedSize;
1703
+ }
1704
+
1705
+ decoder.Release();
1706
+ _decoderFilter.Release();
1707
+ return S_OK;
1708
+ }
1709
+
1710
+
1711
+ static const UInt32 kNumThreadsMax = (1 << 12);
1712
+
1713
+ struct CBenchEncoders
1714
+ {
1715
+ CEncoderInfo *encoders;
1716
+ CBenchEncoders(UInt32 num): encoders(NULL) { encoders = new CEncoderInfo[num]; }
1717
+ ~CBenchEncoders() { delete []encoders; }
1718
+ };
1719
+
1720
+
1721
+ static UInt64 GetNumIterations(UInt64 numCommands, UInt64 complexInCommands)
1722
+ {
1723
+ if (numCommands < (1 << 4))
1724
+ numCommands = (1 << 4);
1725
+ UInt64 res = complexInCommands / numCommands;
1726
+ return (res == 0 ? 1 : res);
1727
+ }
1728
+
1729
+
1730
+
1731
+ #ifndef Z7_ST
1732
+
1733
+ // ---------- CBenchThreadsFlusher ----------
1734
+
1735
+ struct CBenchThreadsFlusher
1736
+ {
1737
+ CBenchEncoders *EncodersSpec;
1738
+ CBenchSyncCommon Common;
1739
+ unsigned NumThreads;
1740
+ bool NeedClose;
1741
+
1742
+ CBenchThreadsFlusher(): NumThreads(0), NeedClose(false) {}
1743
+
1744
+ ~CBenchThreadsFlusher()
1745
+ {
1746
+ StartAndWait(true);
1747
+ }
1748
+
1749
+ WRes StartAndWait(bool exitMode = false);
1750
+ };
1751
+
1752
+
1753
+ WRes CBenchThreadsFlusher::StartAndWait(bool exitMode)
1754
+ {
1755
+ if (!NeedClose)
1756
+ return 0;
1757
+
1758
+ Common.ExitMode = exitMode;
1759
+ WRes res = Common.StartEvent.Set();
1760
+
1761
+ for (unsigned i = 0; i < NumThreads; i++)
1762
+ {
1763
+ NWindows::CThread &t = EncodersSpec->encoders[i].thread[0];
1764
+ if (t.IsCreated())
1765
+ {
1766
+ WRes res2 = t.Wait_Close();
1767
+ if (res == 0)
1768
+ res = res2;
1769
+ }
1770
+ }
1771
+ NeedClose = false;
1772
+ return res;
1773
+ }
1774
+
1775
+ #endif // Z7_ST
1776
+
1777
+
1778
+
1779
+ static void SetPseudoRand(Byte *data, size_t size, UInt32 startValue)
1780
+ {
1781
+ for (size_t i = 0; i < size; i++)
1782
+ {
1783
+ data[i] = (Byte)startValue;
1784
+ startValue++;
1785
+ }
1786
+ }
1787
+
1788
+
1789
+
1790
+ static HRESULT MethodBench(
1791
+ DECL_EXTERNAL_CODECS_LOC_VARS
1792
+ UInt64 complexInCommands,
1793
+ #ifndef Z7_ST
1794
+ bool oldLzmaBenchMode,
1795
+ UInt32 numThreads,
1796
+ const CAffinityMode *affinityMode,
1797
+ #endif
1798
+ const COneMethodInfo &method2,
1799
+ size_t uncompressedDataSize,
1800
+ const Byte *fileData,
1801
+ unsigned generateDictBits,
1802
+
1803
+ IBenchPrintCallback *printCallback,
1804
+ IBenchCallback *callback,
1805
+ CBenchProps *benchProps)
1806
+ {
1807
+ COneMethodInfo method = method2;
1808
+ UInt64 methodId;
1809
+ UInt32 numStreams;
1810
+ bool isFilter;
1811
+ const int codecIndex = FindMethod_Index(
1812
+ EXTERNAL_CODECS_LOC_VARS
1813
+ method.MethodName, true,
1814
+ methodId, numStreams, isFilter);
1815
+ if (codecIndex < 0)
1816
+ return E_NOTIMPL;
1817
+ if (numStreams != 1)
1818
+ return E_INVALIDARG;
1819
+
1820
+ UInt32 numEncoderThreads = 1;
1821
+ UInt32 numSubDecoderThreads = 1;
1822
+
1823
+ #ifndef Z7_ST
1824
+ numEncoderThreads = numThreads;
1825
+
1826
+ if (oldLzmaBenchMode)
1827
+ if (methodId == k_LZMA)
1828
+ {
1829
+ if (numThreads == 1 && method.Get_NumThreads() < 0)
1830
+ method.AddProp_NumThreads(1);
1831
+ const UInt32 numLzmaThreads = method.Get_Lzma_NumThreads();
1832
+ if (numThreads > 1 && numLzmaThreads > 1)
1833
+ {
1834
+ numEncoderThreads = (numThreads + 1) / 2; // 20.03
1835
+ numSubDecoderThreads = 2;
1836
+ }
1837
+ }
1838
+
1839
+ const bool mtEncMode = (numEncoderThreads > 1) || affinityMode->NeedAffinity();
1840
+
1841
+ #endif
1842
+
1843
+ CBenchEncoders encodersSpec(numEncoderThreads);
1844
+ CEncoderInfo *encoders = encodersSpec.encoders;
1845
+
1846
+ UInt32 i;
1847
+
1848
+ for (i = 0; i < numEncoderThreads; i++)
1849
+ {
1850
+ CEncoderInfo &encoder = encoders[i];
1851
+ encoder.callback = (i == 0) ? callback : NULL;
1852
+ encoder.printCallback = printCallback;
1853
+
1854
+ #ifndef Z7_ST
1855
+ encoder.EncoderIndex = i;
1856
+ encoder.NumEncoderInternalThreads = numSubDecoderThreads;
1857
+ encoder.AffinityMode = *affinityMode;
1858
+
1859
+ /*
1860
+ if (numSubDecoderThreads > 1)
1861
+ if (encoder.AffinityMode.NeedAffinity()
1862
+ && encoder.AffinityMode.NumBundleThreads == 1)
1863
+ {
1864
+ // if old LZMA benchmark uses two threads in coder, we increase (NumBundleThreads) for old LZMA benchmark uses two threads instead of one
1865
+ if (encoder.AffinityMode.NumBundleThreads * 2 <= encoder.AffinityMode.NumCores)
1866
+ encoder.AffinityMode.NumBundleThreads *= 2;
1867
+ }
1868
+ */
1869
+
1870
+ #endif
1871
+
1872
+ {
1873
+ CCreatedCoder cod;
1874
+ RINOK(CreateCoder_Index(EXTERNAL_CODECS_LOC_VARS (unsigned)codecIndex, true, encoder._encoderFilter, cod))
1875
+ encoder._encoder = cod.Coder;
1876
+ if (!encoder._encoder && !encoder._encoderFilter)
1877
+ return E_NOTIMPL;
1878
+ }
1879
+
1880
+ SetPseudoRand(encoder._iv, sizeof(encoder._iv), 17);
1881
+ SetPseudoRand(encoder._key, sizeof(encoder._key), 51);
1882
+ SetPseudoRand(encoder._psw, sizeof(encoder._psw), 123);
1883
+
1884
+ for (UInt32 j = 0; j < numSubDecoderThreads; j++)
1885
+ {
1886
+ CCreatedCoder cod;
1887
+ CMyComPtr<ICompressCoder> &decoder = encoder._decoders[j];
1888
+ RINOK(CreateCoder_Id(EXTERNAL_CODECS_LOC_VARS methodId, false, encoder._decoderFilter, cod))
1889
+ decoder = cod.Coder;
1890
+ if (!encoder._decoderFilter && !decoder)
1891
+ return E_NOTIMPL;
1892
+ }
1893
+
1894
+ encoder.UseRealData_Enc =
1895
+ encoder.CheckCrc_Enc = (benchProps->EncComplex) > 30;
1896
+
1897
+ encoder.CheckCrcMode_Dec = k_CheckCrcMode_Always;
1898
+ if (benchProps->DecComplexCompr +
1899
+ benchProps->DecComplexUnc <= 30)
1900
+ encoder.CheckCrcMode_Dec =
1901
+ k_CheckCrcMode_FirstPass; // for filters
1902
+ // k_CheckCrcMode_Never; // for debug
1903
+ // k_CheckCrcMode_Always; // for debug
1904
+ if (fileData)
1905
+ {
1906
+ encoder.UseRealData_Enc = true;
1907
+ encoder.CheckCrcMode_Dec = k_CheckCrcMode_Always;
1908
+ }
1909
+ }
1910
+
1911
+ UInt32 crc = 0;
1912
+ if (fileData)
1913
+ crc = CrcCalc(fileData, uncompressedDataSize);
1914
+
1915
+ for (i = 0; i < numEncoderThreads; i++)
1916
+ {
1917
+ CEncoderInfo &encoder = encoders[i];
1918
+ encoder._method = method;
1919
+ encoder.generateDictBits = generateDictBits;
1920
+ encoder._uncompressedDataSize = uncompressedDataSize;
1921
+ encoder.kBufferSize = uncompressedDataSize;
1922
+ encoder.fileData = fileData;
1923
+ encoder.crc = crc;
1924
+ }
1925
+
1926
+ CBenchProgressStatus status;
1927
+ status.Res = S_OK;
1928
+ status.EncodeMode = true;
1929
+
1930
+ #ifndef Z7_ST
1931
+ CBenchThreadsFlusher encoderFlusher;
1932
+ if (mtEncMode)
1933
+ {
1934
+ WRes wres = encoderFlusher.Common.StartEvent.Create();
1935
+ if (wres != 0)
1936
+ return HRESULT_FROM_WIN32(wres);
1937
+ encoderFlusher.NumThreads = numEncoderThreads;
1938
+ encoderFlusher.EncodersSpec = &encodersSpec;
1939
+ encoderFlusher.NeedClose = true;
1940
+ }
1941
+ #endif
1942
+
1943
+ for (i = 0; i < numEncoderThreads; i++)
1944
+ {
1945
+ CEncoderInfo &encoder = encoders[i];
1946
+ encoder.NumIterations = GetNumIterations(benchProps->GetNumCommands_Enc(uncompressedDataSize), complexInCommands);
1947
+ // encoder.NumIterations = 3;
1948
+ {
1949
+ #if 0
1950
+ #define kCrcPoly 0xEDB88320
1951
+ UInt32 r = i;
1952
+ unsigned num = numEncoderThreads < 256 ? 8 : 16;
1953
+ do
1954
+ r = (r >> 1) ^ (kCrcPoly & ((UInt32)0 - (r & 1)));
1955
+ while (--num);
1956
+ encoder.Salt = r;
1957
+ #else
1958
+ UInt32 salt0 = g_CrcTable[(Byte)i];
1959
+ UInt32 salt1 = g_CrcTable[(Byte)(i >> 8)];
1960
+ encoder.Salt = salt0 ^ (salt1 << 3);
1961
+ #endif
1962
+ }
1963
+
1964
+ // (g_CrcTable[0] == 0), and (encoder.Salt == 0) for first thread
1965
+ // printf("\n encoder index = %d, Salt = %8x\n", i, encoder.Salt);
1966
+
1967
+ encoder.KeySize = benchProps->KeySize;
1968
+
1969
+ for (int j = 0; j < 2; j++)
1970
+ {
1971
+ CBenchProgressInfo *spec = new CBenchProgressInfo;
1972
+ encoder.progressInfoSpec[j] = spec;
1973
+ encoder.progressInfo[j] = spec;
1974
+ spec->Status = &status;
1975
+ }
1976
+
1977
+ if (i == 0)
1978
+ {
1979
+ CBenchProgressInfo *bpi = encoder.progressInfoSpec[0];
1980
+ bpi->Callback = callback;
1981
+ bpi->BenchInfo.NumIterations = numEncoderThreads;
1982
+ }
1983
+
1984
+ #ifndef Z7_ST
1985
+ if (mtEncMode)
1986
+ {
1987
+ #ifdef USE_ALLOCA
1988
+ encoder.AllocaSize = BENCH_ALLOCA_VALUE(i);
1989
+ #endif
1990
+
1991
+ encoder.Common = &encoderFlusher.Common;
1992
+ encoder.IsGlobalMtMode = numEncoderThreads > 1;
1993
+ RINOK(encoder.CreateEncoderThread())
1994
+ }
1995
+ #endif
1996
+ }
1997
+
1998
+ if (printCallback)
1999
+ {
2000
+ RINOK(printCallback->CheckBreak())
2001
+ }
2002
+
2003
+ #ifndef Z7_ST
2004
+ if (mtEncMode)
2005
+ {
2006
+ for (i = 0; i < numEncoderThreads; i++)
2007
+ {
2008
+ CEncoderInfo &encoder = encoders[i];
2009
+ const WRes wres = encoder.ReadyEvent.Lock();
2010
+ if (wres != 0)
2011
+ return HRESULT_FROM_WIN32(wres);
2012
+ RINOK(encoder.Results[0])
2013
+ }
2014
+
2015
+ CBenchProgressInfo *bpi = encoders[0].progressInfoSpec[0];
2016
+ bpi->SetStartTime();
2017
+
2018
+ const WRes wres = encoderFlusher.StartAndWait();
2019
+ if (status.Res == 0 && wres != 0)
2020
+ return HRESULT_FROM_WIN32(wres);
2021
+ }
2022
+ else
2023
+ #endif
2024
+ {
2025
+ RINOK(encoders[0].Encode())
2026
+ }
2027
+
2028
+ RINOK(status.Res)
2029
+
2030
+ CBenchInfo info;
2031
+
2032
+ encoders[0].progressInfoSpec[0]->SetFinishTime(info);
2033
+ info.UnpackSize = 0;
2034
+ info.PackSize = 0;
2035
+ info.NumIterations = encoders[0].NumIterations;
2036
+
2037
+ for (i = 0; i < numEncoderThreads; i++)
2038
+ {
2039
+ const CEncoderInfo &encoder = encoders[i];
2040
+ info.UnpackSize += encoder.kBufferSize;
2041
+ info.PackSize += encoder.compressedSize;
2042
+ // printf("\n%7d\n", encoder.compressedSize);
2043
+ }
2044
+
2045
+ RINOK(callback->SetEncodeResult(info, true))
2046
+
2047
+
2048
+
2049
+
2050
+ // ---------- Decode ----------
2051
+
2052
+ status.Res = S_OK;
2053
+ status.EncodeMode = false;
2054
+
2055
+ const UInt32 numDecoderThreads = numEncoderThreads * numSubDecoderThreads;
2056
+ #ifndef Z7_ST
2057
+ const bool mtDecoderMode = (numDecoderThreads > 1) || affinityMode->NeedAffinity();
2058
+ #endif
2059
+
2060
+ for (i = 0; i < numEncoderThreads; i++)
2061
+ {
2062
+ CEncoderInfo &encoder = encoders[i];
2063
+
2064
+ /*
2065
+ #ifndef Z7_ST
2066
+ // encoder.affinityMode = *affinityMode;
2067
+ if (encoder.NumEncoderInternalThreads != 1)
2068
+ encoder.AffinityMode.DivideNum = encoder.NumEncoderInternalThreads;
2069
+ #endif
2070
+ */
2071
+
2072
+
2073
+ if (i == 0)
2074
+ {
2075
+ encoder.NumIterations = GetNumIterations(
2076
+ benchProps->GetNumCommands_Dec(
2077
+ encoder.compressedSize,
2078
+ encoder.kBufferSize),
2079
+ complexInCommands);
2080
+ CBenchProgressInfo *bpi = encoder.progressInfoSpec[0];
2081
+ bpi->Callback = callback;
2082
+ bpi->BenchInfo.NumIterations = numDecoderThreads;
2083
+ bpi->SetStartTime();
2084
+ }
2085
+ else
2086
+ encoder.NumIterations = encoders[0].NumIterations;
2087
+
2088
+ #ifndef Z7_ST
2089
+ {
2090
+ const int numSubThreads = method.Get_NumThreads();
2091
+ encoder.NumDecoderSubThreads = (numSubThreads <= 0) ? 1 : (unsigned)numSubThreads;
2092
+ }
2093
+ if (mtDecoderMode)
2094
+ {
2095
+ for (UInt32 j = 0; j < numSubDecoderThreads; j++)
2096
+ {
2097
+ const HRESULT res = encoder.CreateDecoderThread(j, (i == 0 && j == 0)
2098
+ #ifdef USE_ALLOCA
2099
+ , BENCH_ALLOCA_VALUE(i * numSubDecoderThreads + j)
2100
+ #endif
2101
+ );
2102
+ RINOK(res)
2103
+ }
2104
+ }
2105
+ else
2106
+ #endif
2107
+ {
2108
+ RINOK(encoder.Decode(0))
2109
+ }
2110
+ }
2111
+
2112
+ #ifndef Z7_ST
2113
+ if (mtDecoderMode)
2114
+ {
2115
+ WRes wres = 0;
2116
+ HRESULT res = S_OK;
2117
+ for (i = 0; i < numEncoderThreads; i++)
2118
+ for (UInt32 j = 0; j < numSubDecoderThreads; j++)
2119
+ {
2120
+ CEncoderInfo &encoder = encoders[i];
2121
+ const WRes wres2 = encoder.thread[j].
2122
+ // Wait(); // later we can get thread times from thread in UNDER_CE
2123
+ Wait_Close();
2124
+ if (wres == 0 && wres2 != 0)
2125
+ wres = wres2;
2126
+ const HRESULT res2 = encoder.Results[j];
2127
+ if (res == 0 && res2 != 0)
2128
+ res = res2;
2129
+ }
2130
+ if (wres != 0)
2131
+ return HRESULT_FROM_WIN32(wres);
2132
+ RINOK(res)
2133
+ }
2134
+ #endif // Z7_ST
2135
+
2136
+ RINOK(status.Res)
2137
+ encoders[0].progressInfoSpec[0]->SetFinishTime(info);
2138
+
2139
+ /*
2140
+ #ifndef Z7_ST
2141
+ #ifdef UNDER_CE
2142
+ if (mtDecoderMode)
2143
+ for (i = 0; i < numEncoderThreads; i++)
2144
+ for (UInt32 j = 0; j < numSubDecoderThreads; j++)
2145
+ {
2146
+ FILETIME creationTime, exitTime, kernelTime, userTime;
2147
+ if (::GetThreadTimes(encoders[i].thread[j], &creationTime, &exitTime, &kernelTime, &userTime) != 0)
2148
+ info.UserTime += GetTime64(userTime) + GetTime64(kernelTime);
2149
+ }
2150
+ #endif
2151
+ #endif
2152
+ */
2153
+
2154
+ info.UnpackSize = 0;
2155
+ info.PackSize = 0;
2156
+ info.NumIterations = numSubDecoderThreads * encoders[0].NumIterations;
2157
+
2158
+ for (i = 0; i < numEncoderThreads; i++)
2159
+ {
2160
+ const CEncoderInfo &encoder = encoders[i];
2161
+ info.UnpackSize += encoder.kBufferSize;
2162
+ info.PackSize += encoder.compressedSize;
2163
+ }
2164
+
2165
+ // RINOK(callback->SetDecodeResult(info, false)) // why we called before 21.03 ??
2166
+ RINOK(callback->SetDecodeResult(info, true))
2167
+
2168
+ return S_OK;
2169
+ }
2170
+
2171
+
2172
+
2173
+ static inline UInt64 GetDictSizeFromLog(unsigned dictSizeLog)
2174
+ {
2175
+ /*
2176
+ if (dictSizeLog < 32)
2177
+ return (UInt32)1 << dictSizeLog;
2178
+ else
2179
+ return (UInt32)(Int32)-1;
2180
+ */
2181
+ return (UInt64)1 << dictSizeLog;
2182
+ }
2183
+
2184
+
2185
+ // it's limit of current LZMA implementation that can be changed later
2186
+ #define kLzmaMaxDictSize ((UInt32)15 << 28)
2187
+
2188
+ static inline UInt64 GetLZMAUsage(bool multiThread, int btMode, UInt64 dict)
2189
+ {
2190
+ if (dict == 0)
2191
+ dict = 1;
2192
+ if (dict > kLzmaMaxDictSize)
2193
+ dict = kLzmaMaxDictSize;
2194
+ UInt32 hs = (UInt32)dict - 1;
2195
+ hs |= (hs >> 1);
2196
+ hs |= (hs >> 2);
2197
+ hs |= (hs >> 4);
2198
+ hs |= (hs >> 8);
2199
+ hs >>= 1;
2200
+ hs |= 0xFFFF;
2201
+ if (hs > (1 << 24))
2202
+ hs >>= 1;
2203
+ hs++;
2204
+ hs += (1 << 16);
2205
+
2206
+ const UInt32 kBlockSizeMax = (UInt32)0 - (UInt32)(1 << 16);
2207
+ UInt64 blockSize = (UInt64)dict + (1 << 16)
2208
+ + (multiThread ? (1 << 20) : 0);
2209
+ blockSize += (blockSize >> (blockSize < ((UInt32)1 << 30) ? 1 : 2));
2210
+ if (blockSize >= kBlockSizeMax)
2211
+ blockSize = kBlockSizeMax;
2212
+
2213
+ UInt64 son = (UInt64)dict;
2214
+ if (btMode)
2215
+ son *= 2;
2216
+ const UInt64 v = (hs + son) * 4 + blockSize +
2217
+ (1 << 20) + (multiThread ? (6 << 20) : 0);
2218
+
2219
+ // printf("\nGetLZMAUsage = %d\n", (UInt32)(v >> 20));
2220
+ // printf("\nblockSize = %d\n", (UInt32)(blockSize >> 20));
2221
+ return v;
2222
+ }
2223
+
2224
+
2225
+ UInt64 GetBenchMemoryUsage(UInt32 numThreads, int level, UInt64 dictionary, bool totalBench)
2226
+ {
2227
+ const size_t kBufferSize = (size_t)dictionary + kAdditionalSize;
2228
+ const UInt64 kCompressedBufferSize = GetBenchCompressedSize(kBufferSize); // / 2;
2229
+ if (level < 0)
2230
+ level = 5;
2231
+ const int algo = (level < 5 ? 0 : 1);
2232
+ const int btMode = (algo == 0 ? 0 : 1);
2233
+
2234
+ UInt32 numBigThreads = numThreads;
2235
+ const bool lzmaMt = (totalBench || (numThreads > 1 && btMode));
2236
+ if (btMode)
2237
+ {
2238
+ if (!totalBench && lzmaMt)
2239
+ numBigThreads /= 2;
2240
+ }
2241
+ return ((UInt64)kBufferSize + kCompressedBufferSize +
2242
+ GetLZMAUsage(lzmaMt, btMode, dictionary) + (2 << 20)) * numBigThreads;
2243
+ }
2244
+
2245
+ static UInt64 GetBenchMemoryUsage_Hash(UInt32 numThreads, UInt64 dictionary)
2246
+ {
2247
+ // dictionary += (dictionary >> 9); // for page tables (virtual memory)
2248
+ return (UInt64)(dictionary + (1 << 15)) * numThreads + (2 << 20);
2249
+ }
2250
+
2251
+
2252
+ // ---------- CRC and HASH ----------
2253
+
2254
+ struct CCrcInfo_Base
2255
+ {
2256
+ CMidAlignedBuffer Buffer;
2257
+ const Byte *Data;
2258
+ size_t Size;
2259
+ bool CreateLocalBuf;
2260
+ UInt32 CheckSum_Res;
2261
+
2262
+ CCrcInfo_Base(): CreateLocalBuf(true), CheckSum_Res(0) {}
2263
+
2264
+ HRESULT Generate(const Byte *data, size_t size);
2265
+ HRESULT CrcProcess(UInt64 numIterations,
2266
+ const UInt32 *checkSum, IHasher *hf,
2267
+ IBenchPrintCallback *callback);
2268
+ };
2269
+
2270
+
2271
+ // for debug: define it to test hash calling with unaligned data
2272
+ // #define Z7_BENCH_HASH_ALIGN_BUF_OFFSET 3
2273
+
2274
+ HRESULT CCrcInfo_Base::Generate(const Byte *data, size_t size)
2275
+ {
2276
+ Size = size;
2277
+ Data = data;
2278
+ if (!data || CreateLocalBuf)
2279
+ {
2280
+ Byte *buf;
2281
+ const size_t size2 = (size + k_RandBuf_AlignMask) & ~(size_t)k_RandBuf_AlignMask;
2282
+ if (size2 < size)
2283
+ return E_OUTOFMEMORY;
2284
+ #ifdef Z7_BENCH_HASH_ALIGN_BUF_OFFSET
2285
+ ALLOC_WITH_HRESULT(&Buffer, size2 + Z7_BENCH_HASH_ALIGN_BUF_OFFSET)
2286
+ buf = Buffer + Z7_BENCH_HASH_ALIGN_BUF_OFFSET;
2287
+ #else
2288
+ ALLOC_WITH_HRESULT(&Buffer, size2)
2289
+ buf = Buffer;
2290
+ #endif
2291
+ Data = buf;
2292
+ if (!data)
2293
+ RandGen_BufAfterPad(buf, size);
2294
+ else if (size != 0) // (CreateLocalBuf == true)
2295
+ memcpy(buf, data, size);
2296
+ }
2297
+ return S_OK;
2298
+ }
2299
+
2300
+
2301
+ #if 1
2302
+ #define HashUpdate(hf, data, size) hf->Update(data, size)
2303
+ #else
2304
+ // for debug:
2305
+ static void HashUpdate(IHasher *hf, const void *data, UInt32 size)
2306
+ {
2307
+ for (;;)
2308
+ {
2309
+ if (size == 0)
2310
+ return;
2311
+ UInt32 size2 = (size * 0x85EBCA87) % size / 8;
2312
+ // UInt32 size2 = size / 2;
2313
+ if (size2 == 0)
2314
+ size2 = 1;
2315
+ hf->Update(data, size2);
2316
+ data = (const void *)((const Byte *)data + size2);
2317
+ size -= size2;
2318
+ }
2319
+ }
2320
+ #endif
2321
+
2322
+
2323
+ HRESULT CCrcInfo_Base::CrcProcess(UInt64 numIterations,
2324
+ const UInt32 *checkSum, IHasher *hf,
2325
+ IBenchPrintCallback *callback)
2326
+ {
2327
+ MY_ALIGN(16)
2328
+ UInt32 hash32[64 / 4];
2329
+ memset(hash32, 0, sizeof(hash32));
2330
+
2331
+ CheckSum_Res = 0;
2332
+
2333
+ const UInt32 hashSize = hf->GetDigestSize();
2334
+ if (hashSize > sizeof(hash32))
2335
+ return S_FALSE;
2336
+
2337
+ const Byte *buf = Data;
2338
+ const size_t size = Size;
2339
+ UInt32 checkSum_Prev = 0;
2340
+
2341
+ UInt64 prev = 0;
2342
+ UInt64 cur = 0;
2343
+
2344
+ do
2345
+ {
2346
+ hf->Init();
2347
+ size_t pos = 0;
2348
+ do
2349
+ {
2350
+ const size_t rem = size - pos;
2351
+ const UInt32 kStep = ((UInt32)1 << 31);
2352
+ const UInt32 curSize = (rem < kStep) ? (UInt32)rem : kStep;
2353
+ HashUpdate(hf, buf + pos, curSize);
2354
+ pos += curSize;
2355
+ }
2356
+ while (pos != size);
2357
+
2358
+ hf->Final((Byte *)(void *)hash32);
2359
+ UInt32 sum = 0;
2360
+ for (UInt32 j = 0; j < hashSize; j += 4)
2361
+ {
2362
+ sum = rotlFixed(sum, 11);
2363
+ sum += GetUi32((const Byte *)(const void *)hash32 + j);
2364
+ }
2365
+ if (checkSum)
2366
+ {
2367
+ if (sum != *checkSum)
2368
+ return S_FALSE;
2369
+ }
2370
+ else
2371
+ {
2372
+ checkSum_Prev = sum;
2373
+ checkSum = &checkSum_Prev;
2374
+ }
2375
+ if (callback)
2376
+ {
2377
+ cur += size;
2378
+ if (cur - prev >= ((UInt32)1 << 30))
2379
+ {
2380
+ prev = cur;
2381
+ RINOK(callback->CheckBreak())
2382
+ }
2383
+ }
2384
+ }
2385
+ while (--numIterations);
2386
+
2387
+ CheckSum_Res = checkSum_Prev;
2388
+ return S_OK;
2389
+ }
2390
+
2391
+ extern
2392
+ UInt32 g_BenchCpuFreqTemp; // we need non-static variavble to disable compiler optimization
2393
+ UInt32 g_BenchCpuFreqTemp = 1;
2394
+
2395
+ #define YY1 sum += val; sum ^= val;
2396
+ #define YY3 YY1 YY1 YY1 YY1
2397
+ #define YY5 YY3 YY3 YY3 YY3
2398
+ #define YY7 YY5 YY5 YY5 YY5
2399
+ static const UInt32 kNumFreqCommands = 128;
2400
+
2401
+ EXTERN_C_BEGIN
2402
+
2403
+ static UInt32 CountCpuFreq(UInt32 sum, UInt32 num, UInt32 val)
2404
+ {
2405
+ for (UInt32 i = 0; i < num; i++)
2406
+ {
2407
+ YY7
2408
+ }
2409
+ return sum;
2410
+ }
2411
+
2412
+ EXTERN_C_END
2413
+
2414
+
2415
+ #ifndef Z7_ST
2416
+
2417
+ struct CBaseThreadInfo
2418
+ {
2419
+ NWindows::CThread Thread;
2420
+ IBenchPrintCallback *Callback;
2421
+ HRESULT CallbackRes;
2422
+
2423
+ WRes Wait_If_Created()
2424
+ {
2425
+ if (!Thread.IsCreated())
2426
+ return 0;
2427
+ return Thread.Wait_Close();
2428
+ }
2429
+ };
2430
+
2431
+ struct CFreqInfo: public CBaseThreadInfo
2432
+ {
2433
+ UInt32 ValRes;
2434
+ UInt32 Size;
2435
+ UInt64 NumIterations;
2436
+ };
2437
+
2438
+ static THREAD_FUNC_DECL FreqThreadFunction(void *param)
2439
+ {
2440
+ CFreqInfo *p = (CFreqInfo *)param;
2441
+
2442
+ UInt32 sum = g_BenchCpuFreqTemp;
2443
+ for (UInt64 k = p->NumIterations; k > 0; k--)
2444
+ {
2445
+ if (p->Callback)
2446
+ {
2447
+ p->CallbackRes = p->Callback->CheckBreak();
2448
+ if (p->CallbackRes != S_OK)
2449
+ break;
2450
+ }
2451
+ sum = CountCpuFreq(sum, p->Size, g_BenchCpuFreqTemp);
2452
+ }
2453
+ p->ValRes = sum;
2454
+ return THREAD_FUNC_RET_ZERO;
2455
+ }
2456
+
2457
+ struct CFreqThreads
2458
+ {
2459
+ CFreqInfo *Items;
2460
+ UInt32 NumThreads;
2461
+
2462
+ CFreqThreads(): Items(NULL), NumThreads(0) {}
2463
+
2464
+ WRes WaitAll()
2465
+ {
2466
+ WRes wres = 0;
2467
+ for (UInt32 i = 0; i < NumThreads; i++)
2468
+ {
2469
+ WRes wres2 = Items[i].Wait_If_Created();
2470
+ if (wres == 0 && wres2 != 0)
2471
+ wres = wres2;
2472
+ }
2473
+ NumThreads = 0;
2474
+ return wres;
2475
+ }
2476
+
2477
+ ~CFreqThreads()
2478
+ {
2479
+ WaitAll();
2480
+ delete []Items;
2481
+ }
2482
+ };
2483
+
2484
+
2485
+ static THREAD_FUNC_DECL CrcThreadFunction(void *param);
2486
+
2487
+ struct CCrcInfo: public CBaseThreadInfo
2488
+ {
2489
+ const Byte *Data;
2490
+ size_t Size;
2491
+ UInt64 NumIterations;
2492
+ bool CheckSumDefined;
2493
+ UInt32 CheckSum;
2494
+ CMyComPtr<IHasher> Hasher;
2495
+ HRESULT Res;
2496
+ UInt32 CheckSum_Res;
2497
+
2498
+ #ifndef Z7_ST
2499
+ NSynchronization::CManualResetEvent ReadyEvent;
2500
+ UInt32 ThreadIndex;
2501
+ CBenchSyncCommon *Common;
2502
+ CAffinityMode AffinityMode;
2503
+ #endif
2504
+
2505
+ // we want to call CCrcInfo_Base::Buffer.Free() in main thread.
2506
+ // so we uses non-local CCrcInfo_Base.
2507
+ CCrcInfo_Base crcib;
2508
+
2509
+ HRESULT CreateThread()
2510
+ {
2511
+ WRes res = 0;
2512
+ if (!ReadyEvent.IsCreated())
2513
+ res = ReadyEvent.Create();
2514
+ if (res == 0)
2515
+ res = AffinityMode.CreateThread_WithAffinity(Thread, CrcThreadFunction, this,
2516
+ ThreadIndex);
2517
+ return HRESULT_FROM_WIN32(res);
2518
+ }
2519
+
2520
+ #ifdef USE_ALLOCA
2521
+ size_t AllocaSize;
2522
+ #endif
2523
+
2524
+ void Process();
2525
+
2526
+ CCrcInfo(): Res(E_FAIL) {}
2527
+ };
2528
+
2529
+ static const bool k_Crc_CreateLocalBuf_For_File = true; // for total BW test
2530
+ // static const bool k_Crc_CreateLocalBuf_For_File = false; // for shared memory read test
2531
+
2532
+ void CCrcInfo::Process()
2533
+ {
2534
+ crcib.CreateLocalBuf = k_Crc_CreateLocalBuf_For_File;
2535
+ // we can use additional Generate() passes to reduce some time effects for new page allocation
2536
+ // for (unsigned y = 0; y < 10; y++)
2537
+ Res = crcib.Generate(Data, Size);
2538
+
2539
+ // if (Common)
2540
+ {
2541
+ WRes wres = ReadyEvent.Set();
2542
+ if (wres != 0)
2543
+ {
2544
+ if (Res == 0)
2545
+ Res = HRESULT_FROM_WIN32(wres);
2546
+ return;
2547
+ }
2548
+ if (Res != 0)
2549
+ return;
2550
+
2551
+ wres = Common->StartEvent.Lock();
2552
+
2553
+ if (wres != 0)
2554
+ {
2555
+ Res = HRESULT_FROM_WIN32(wres);
2556
+ return;
2557
+ }
2558
+ if (Common->ExitMode)
2559
+ return;
2560
+ }
2561
+
2562
+ Res = crcib.CrcProcess(NumIterations,
2563
+ CheckSumDefined ? &CheckSum : NULL, Hasher,
2564
+ Callback);
2565
+ CheckSum_Res = crcib.CheckSum_Res;
2566
+ /*
2567
+ We don't want to include the time of slow CCrcInfo_Base::Buffer.Free()
2568
+ to time of benchmark. So we don't free Buffer here
2569
+ */
2570
+ // crcib.Buffer.Free();
2571
+ }
2572
+
2573
+
2574
+ static THREAD_FUNC_DECL CrcThreadFunction(void *param)
2575
+ {
2576
+ CCrcInfo *p = (CCrcInfo *)param;
2577
+
2578
+ #ifdef USE_ALLOCA
2579
+ alloca(p->AllocaSize);
2580
+ #endif
2581
+ p->Process();
2582
+ return THREAD_FUNC_RET_ZERO;
2583
+ }
2584
+
2585
+
2586
+ struct CCrcThreads
2587
+ {
2588
+ CCrcInfo *Items;
2589
+ unsigned NumThreads;
2590
+ CBenchSyncCommon Common;
2591
+ bool NeedClose;
2592
+
2593
+ CCrcThreads(): Items(NULL), NumThreads(0), NeedClose(false) {}
2594
+
2595
+ WRes StartAndWait(bool exitMode = false);
2596
+
2597
+ ~CCrcThreads()
2598
+ {
2599
+ StartAndWait(true);
2600
+ delete []Items;
2601
+ }
2602
+ };
2603
+
2604
+
2605
+ WRes CCrcThreads::StartAndWait(bool exitMode)
2606
+ {
2607
+ if (!NeedClose)
2608
+ return 0;
2609
+
2610
+ Common.ExitMode = exitMode;
2611
+ WRes wres = Common.StartEvent.Set();
2612
+
2613
+ for (unsigned i = 0; i < NumThreads; i++)
2614
+ {
2615
+ WRes wres2 = Items[i].Wait_If_Created();
2616
+ if (wres == 0 && wres2 != 0)
2617
+ wres = wres2;
2618
+ }
2619
+ NumThreads = 0;
2620
+ NeedClose = false;
2621
+ return wres;
2622
+ }
2623
+
2624
+ #endif
2625
+
2626
+
2627
+ /*
2628
+ static UInt32 CrcCalc1(const Byte *buf, size_t size)
2629
+ {
2630
+ UInt32 crc = CRC_INIT_VAL;
2631
+ for (size_t i = 0; i < size; i++)
2632
+ crc = CRC_UPDATE_BYTE(crc, buf[i]);
2633
+ return CRC_GET_DIGEST(crc);
2634
+ }
2635
+ */
2636
+
2637
+ /*
2638
+ static UInt32 RandGenCrc(Byte *buf, size_t size, CBaseRandomGenerator &RG)
2639
+ {
2640
+ RandGen(buf, size, RG);
2641
+ return CrcCalc1(buf, size);
2642
+ }
2643
+ */
2644
+
2645
+ static bool CrcInternalTest()
2646
+ {
2647
+ CAlignedBuffer buffer;
2648
+ const size_t kBufSize = 1 << 11;
2649
+ const size_t kCheckSize = 1 << 6;
2650
+ buffer.Alloc(kBufSize);
2651
+ if (!buffer.IsAllocated())
2652
+ return false;
2653
+ Byte *buf = (Byte *)buffer;
2654
+ RandGen_BufAfterPad(buf, kBufSize);
2655
+ UInt32 sum = 0;
2656
+ for (size_t i = 0; i < kBufSize - kCheckSize * 2; i += kCheckSize - 1)
2657
+ for (size_t j = 0; j < kCheckSize; j++)
2658
+ {
2659
+ sum = rotlFixed(sum, 11);
2660
+ sum += CrcCalc(buf + i + j, j);
2661
+ }
2662
+ return sum == 0x28462c7c;
2663
+ }
2664
+
2665
+ struct CBenchMethod
2666
+ {
2667
+ unsigned Weight;
2668
+ unsigned DictBits;
2669
+ Int32 EncComplex;
2670
+ Int32 DecComplexCompr;
2671
+ Int32 DecComplexUnc;
2672
+ const char *Name;
2673
+ // unsigned KeySize;
2674
+ };
2675
+
2676
+ // #define USE_SW_CMPLX
2677
+
2678
+ #ifdef USE_SW_CMPLX
2679
+ #define CMPLX(x) ((x) * 1000)
2680
+ #else
2681
+ #define CMPLX(x) (x)
2682
+ #endif
2683
+
2684
+ static const CBenchMethod g_Bench[] =
2685
+ {
2686
+ // { 40, 17, 357, 145, 20, "LZMA:x1" },
2687
+ // { 20, 18, 360, 145, 20, "LZMA2:x1:mt2" },
2688
+
2689
+ { 20, 18, 360, 145, 20, "LZMA:x1" },
2690
+ { 20, 22, 600, 145, 20, "LZMA:x3" },
2691
+
2692
+ { 80, 24, 1220, 145, 20, "LZMA:x5:mt1" },
2693
+ { 80, 24, 1220, 145, 20, "LZMA:x5:mt2" },
2694
+
2695
+ { 10, 16, 124, 40, 14, "Deflate:x1" },
2696
+ { 20, 16, 376, 40, 14, "Deflate:x5" },
2697
+ { 10, 16, 1082, 40, 14, "Deflate:x7" },
2698
+ { 10, 17, 422, 40, 14, "Deflate64:x5" },
2699
+
2700
+ { 10, 15, 590, 69, 69, "BZip2:x1" },
2701
+ { 20, 19, 815, 122, 122, "BZip2:x5" },
2702
+ { 10, 19, 815, 122, 122, "BZip2:x5:mt2" },
2703
+ { 10, 19, 2530, 122, 122, "BZip2:x7" },
2704
+
2705
+ // { 10, 18, 1010, 0, 1150, "PPMDZip:x1" },
2706
+ { 10, 18, 1010, 0, 1150, "PPMD:x1" },
2707
+ // { 10, 22, 1655, 0, 1830, "PPMDZip:x5" },
2708
+ { 10, 22, 1655, 0, 1830, "PPMD:x5" },
2709
+
2710
+ // { 2, 0, -16, 0, -16, "Swap2" },
2711
+ { 2, 0, -16, 0, -16, "Swap4" },
2712
+
2713
+ // { 2, 0, 3, 0, 4, "Delta:1" },
2714
+ // { 2, 0, 3, 0, 4, "Delta:2" },
2715
+ // { 2, 0, 3, 0, 4, "Delta:3" },
2716
+ { 2, 0, 3, 0, 4, "Delta:4" },
2717
+ // { 2, 0, 3, 0, 4, "Delta:8" },
2718
+ // { 2, 0, 3, 0, 4, "Delta:32" },
2719
+
2720
+ { 2, 0, 2, 0, 2, "BCJ" },
2721
+ { 2, 0, 1, 0, 1, "ARM64" },
2722
+ { 2, 0, 1, 0, 1, "RISCV" },
2723
+
2724
+ // { 10, 0, 18, 0, 18, "AES128CBC:1" },
2725
+ // { 10, 0, 21, 0, 21, "AES192CBC:1" },
2726
+ { 10, 0, 24, 0, 24, "AES256CBC:1" },
2727
+
2728
+ // { 10, 0, 18, 0, 18, "AES128CTR:1" },
2729
+ // { 10, 0, 21, 0, 21, "AES192CTR:1" },
2730
+ // { 10, 0, 24, 0, 24, "AES256CTR:1" },
2731
+ // { 2, 0, CMPLX(6), 0, CMPLX(1), "AES128CBC:2" },
2732
+ // { 2, 0, CMPLX(7), 0, CMPLX(1), "AES192CBC:2" },
2733
+ { 2, 0, CMPLX(8), 0, CMPLX(1), "AES256CBC:2" },
2734
+
2735
+ // { 2, 0, CMPLX(1), 0, CMPLX(1), "AES128CTR:2" },
2736
+ // { 2, 0, CMPLX(1), 0, CMPLX(1), "AES192CTR:2" },
2737
+ // { 2, 0, CMPLX(1), 0, CMPLX(1), "AES256CTR:2" },
2738
+
2739
+ // { 1, 0, CMPLX(6), 0, -2, "AES128CBC:3" },
2740
+ // { 1, 0, CMPLX(7), 0, -2, "AES192CBC:3" },
2741
+ { 1, 0, CMPLX(8), 0, -2, "AES256CBC:3" }
2742
+
2743
+ // { 1, 0, CMPLX(1), 0, -2, "AES128CTR:3" },
2744
+ // { 1, 0, CMPLX(1), 0, -2, "AES192CTR:3" },
2745
+ // { 1, 0, CMPLX(1), 0, -2, "AES256CTR:3" },
2746
+ };
2747
+
2748
+ struct CBenchHash
2749
+ {
2750
+ unsigned Weight;
2751
+ UInt32 Complex;
2752
+ UInt32 CheckSum;
2753
+ const char *Name;
2754
+ };
2755
+
2756
+ // #define ARM_CRC_MUL 100
2757
+ #define ARM_CRC_MUL 1
2758
+
2759
+ #define k_Hash_Complex_Mult 256
2760
+
2761
+ static const CBenchHash g_Hash[] =
2762
+ {
2763
+ { 20, 256, 0x21e207bb, "CRC32:12" } ,
2764
+ { 2, 128 *ARM_CRC_MUL, 0x21e207bb, "CRC32:32" },
2765
+ { 2, 64 *ARM_CRC_MUL, 0x21e207bb, "CRC32:64" },
2766
+ { 10, 256, 0x41b901d1, "CRC64" },
2767
+ { 5, 64, 0x43eac94f, "XXH64" },
2768
+ { 2, 2340, 0x3398a904, "MD5" },
2769
+ { 10, 2340, 0xff769021, "SHA1:1" },
2770
+ { 2, CMPLX((20 * 6 + 1) * 4 + 4), 0xff769021, "SHA1:2" },
2771
+ { 10, 5100, 0x7913ba03, "SHA256:1" },
2772
+ { 2, CMPLX((32 * 4 + 1) * 4 + 4), 0x7913ba03, "SHA256:2" },
2773
+ { 5, 3200, 0xe7aeb394, "SHA512:1" },
2774
+ { 2, CMPLX((40 * 4 + 1) * 4 + 4), 0xe7aeb394, "SHA512:2" },
2775
+ // { 10, 3428, 0x1cc99b18, "SHAKE128" },
2776
+ // { 10, 4235, 0x74eaddc3, "SHAKE256" },
2777
+ // { 10, 4000, 0xdf3e6863, "SHA3-224" },
2778
+ { 5, 4200, 0xcecac10d, "SHA3-256" },
2779
+ // { 10, 5538, 0x4e5d9163, "SHA3-384" },
2780
+ // { 10, 8000, 0x96a58289, "SHA3-512" },
2781
+ { 2, 4096, 0x85189d02, "BLAKE2sp:1" },
2782
+ { 2, 1024, 0x85189d02, "BLAKE2sp:2" }, // sse2-way4-fast
2783
+ { 2, 512, 0x85189d02, "BLAKE2sp:3" } // avx2-way8-fast
2784
+ #if 0
2785
+ , { 2, 2048, 0x85189d02, "BLAKE2sp:4" } // sse2-way1
2786
+ , { 2, 1024, 0x85189d02, "BLAKE2sp:5" } // sse2-way2
2787
+ , { 2, 1024, 0x85189d02, "BLAKE2sp:6" } // avx2-way2
2788
+ , { 2, 1024, 0x85189d02, "BLAKE2sp:7" } // avx2-way4
2789
+ #endif
2790
+ };
2791
+
2792
+ static void PrintNumber(IBenchPrintCallback &f, UInt64 value, unsigned size)
2793
+ {
2794
+ char s[128];
2795
+ unsigned startPos = (unsigned)sizeof(s) - 32;
2796
+ memset(s, ' ', startPos);
2797
+ ConvertUInt64ToString(value, s + startPos);
2798
+ // if (withSpace)
2799
+ {
2800
+ startPos--;
2801
+ size++;
2802
+ }
2803
+ unsigned len = (unsigned)strlen(s + startPos);
2804
+ if (size > len)
2805
+ {
2806
+ size -= len;
2807
+ if (startPos < size)
2808
+ startPos = 0;
2809
+ else
2810
+ startPos -= size;
2811
+ }
2812
+ f.Print(s + startPos);
2813
+ }
2814
+
2815
+ static const unsigned kFieldSize_Name = 12;
2816
+ static const unsigned kFieldSize_SmallName = 4;
2817
+ static const unsigned kFieldSize_Speed = 9;
2818
+ static const unsigned kFieldSize_Usage = 5;
2819
+ static const unsigned kFieldSize_RU = 6;
2820
+ static const unsigned kFieldSize_Rating = 6;
2821
+ static const unsigned kFieldSize_EU = 5;
2822
+ static const unsigned kFieldSize_Effec = 5;
2823
+ static const unsigned kFieldSize_CrcSpeed = 8;
2824
+
2825
+
2826
+ static const unsigned kFieldSize_TotalSize = 4 + kFieldSize_Speed + kFieldSize_Usage + kFieldSize_RU + kFieldSize_Rating;
2827
+ static const unsigned kFieldSize_EUAndEffec = 2 + kFieldSize_EU + kFieldSize_Effec;
2828
+
2829
+
2830
+ static void PrintRating(IBenchPrintCallback &f, UInt64 rating, unsigned size)
2831
+ {
2832
+ PrintNumber(f, (rating + 500000) / 1000000, size);
2833
+ }
2834
+
2835
+
2836
+ static void PrintPercents(IBenchPrintCallback &f, UInt64 val, UInt64 divider, unsigned size)
2837
+ {
2838
+ UInt64 v = 0;
2839
+ if (divider != 0)
2840
+ v = (val * 100 + divider / 2) / divider;
2841
+ PrintNumber(f, v, size);
2842
+ }
2843
+
2844
+ static void PrintChars(IBenchPrintCallback &f, char c, unsigned size)
2845
+ {
2846
+ char s[256];
2847
+ memset(s, (Byte)c, size);
2848
+ s[size] = 0;
2849
+ f.Print(s);
2850
+ }
2851
+
2852
+ static void PrintSpaces(IBenchPrintCallback &f, unsigned size)
2853
+ {
2854
+ PrintChars(f, ' ', size);
2855
+ }
2856
+
2857
+ static void PrintUsage(IBenchPrintCallback &f, UInt64 usage, unsigned size)
2858
+ {
2859
+ PrintNumber(f, Benchmark_GetUsage_Percents(usage), size);
2860
+ }
2861
+
2862
+ static void PrintResults(IBenchPrintCallback &f, UInt64 usage, UInt64 rpu, UInt64 rating, bool showFreq, UInt64 cpuFreq)
2863
+ {
2864
+ PrintUsage(f, usage, kFieldSize_Usage);
2865
+ PrintRating(f, rpu, kFieldSize_RU);
2866
+ PrintRating(f, rating, kFieldSize_Rating);
2867
+ if (showFreq)
2868
+ {
2869
+ if (cpuFreq == 0)
2870
+ PrintSpaces(f, kFieldSize_EUAndEffec);
2871
+ else
2872
+ {
2873
+ PrintPercents(f, rating, cpuFreq * usage / kBenchmarkUsageMult, kFieldSize_EU);
2874
+ PrintPercents(f, rating, cpuFreq, kFieldSize_Effec);
2875
+ }
2876
+ }
2877
+ }
2878
+
2879
+
2880
+ void CTotalBenchRes::Generate_From_BenchInfo(const CBenchInfo &info)
2881
+ {
2882
+ Speed = info.GetUnpackSizeSpeed();
2883
+ Usage = info.GetUsage();
2884
+ RPU = info.GetRatingPerUsage(Rating);
2885
+ }
2886
+
2887
+ void CTotalBenchRes::Mult_For_Weight(unsigned weight)
2888
+ {
2889
+ NumIterations2 *= weight;
2890
+ RPU *= weight;
2891
+ Rating *= weight;
2892
+ Usage *= weight;
2893
+ Speed *= weight;
2894
+ }
2895
+
2896
+ void CTotalBenchRes::Update_With_Res(const CTotalBenchRes &r)
2897
+ {
2898
+ Rating += r.Rating;
2899
+ Usage += r.Usage;
2900
+ RPU += r.RPU;
2901
+ Speed += r.Speed;
2902
+ // NumIterations1 = (r1.NumIterations1 + r2.NumIterations1);
2903
+ NumIterations2 += r.NumIterations2;
2904
+ }
2905
+
2906
+ static void PrintResults(IBenchPrintCallback *f,
2907
+ const CBenchInfo &info,
2908
+ unsigned weight,
2909
+ UInt64 rating,
2910
+ bool showFreq, UInt64 cpuFreq,
2911
+ CTotalBenchRes *res)
2912
+ {
2913
+ CTotalBenchRes t;
2914
+ t.Rating = rating;
2915
+ t.NumIterations2 = 1;
2916
+ t.Generate_From_BenchInfo(info);
2917
+
2918
+ if (f)
2919
+ {
2920
+ if (t.Speed != 0)
2921
+ PrintNumber(*f, t.Speed / 1024, kFieldSize_Speed);
2922
+ else
2923
+ PrintSpaces(*f, 1 + kFieldSize_Speed);
2924
+ }
2925
+ if (f)
2926
+ {
2927
+ PrintResults(*f, t.Usage, t.RPU, rating, showFreq, cpuFreq);
2928
+ }
2929
+
2930
+ if (res)
2931
+ {
2932
+ // res->NumIterations1++;
2933
+ t.Mult_For_Weight(weight);
2934
+ res->Update_With_Res(t);
2935
+ }
2936
+ }
2937
+
2938
+ static void PrintTotals(IBenchPrintCallback &f,
2939
+ bool showFreq, UInt64 cpuFreq, bool showSpeed, const CTotalBenchRes &res)
2940
+ {
2941
+ const UInt64 numIterations2 = res.NumIterations2 ? res.NumIterations2 : 1;
2942
+ const UInt64 speed = res.Speed / numIterations2;
2943
+ if (showSpeed && speed != 0)
2944
+ PrintNumber(f, speed / 1024, kFieldSize_Speed);
2945
+ else
2946
+ PrintSpaces(f, 1 + kFieldSize_Speed);
2947
+
2948
+ // PrintSpaces(f, 1 + kFieldSize_Speed);
2949
+ // UInt64 numIterations1 = res.NumIterations1; if (numIterations1 == 0) numIterations1 = 1;
2950
+ PrintResults(f, res.Usage / numIterations2, res.RPU / numIterations2, res.Rating / numIterations2, showFreq, cpuFreq);
2951
+ }
2952
+
2953
+
2954
+ static void PrintHex(AString &s, UInt64 v)
2955
+ {
2956
+ char temp[32];
2957
+ ConvertUInt64ToHex(v, temp);
2958
+ s += temp;
2959
+ }
2960
+
2961
+ AString GetProcessThreadsInfo(const NSystem::CProcessAffinity &ti)
2962
+ {
2963
+ AString s;
2964
+ // s.Add_UInt32(ti.numProcessThreads);
2965
+ unsigned numSysThreads = ti.GetNumSystemThreads();
2966
+ if (ti.GetNumProcessThreads() != numSysThreads)
2967
+ {
2968
+ // if (ti.numProcessThreads != ti.numSysThreads)
2969
+ {
2970
+ s += " / ";
2971
+ s.Add_UInt32(numSysThreads);
2972
+ }
2973
+ s += " : ";
2974
+ #ifdef _WIN32
2975
+ PrintHex(s, ti.processAffinityMask);
2976
+ s += " / ";
2977
+ PrintHex(s, ti.systemAffinityMask);
2978
+ #else
2979
+ unsigned i = (numSysThreads + 3) & ~(unsigned)3;
2980
+ if (i == 0)
2981
+ i = 4;
2982
+ for (; i >= 4; )
2983
+ {
2984
+ i -= 4;
2985
+ unsigned val = 0;
2986
+ for (unsigned k = 0; k < 4; k++)
2987
+ {
2988
+ const unsigned bit = (ti.IsCpuSet(i + k) ? 1 : 0);
2989
+ val += (bit << k);
2990
+ }
2991
+ PrintHex(s, val);
2992
+ }
2993
+ #endif
2994
+ }
2995
+ return s;
2996
+ }
2997
+
2998
+
2999
+ #ifdef Z7_LARGE_PAGES
3000
+
3001
+ #ifdef _WIN32
3002
+ extern bool g_LargePagesMode;
3003
+ extern "C"
3004
+ {
3005
+ extern SIZE_T g_LargePageSize;
3006
+ }
3007
+ #endif
3008
+
3009
+ void Add_LargePages_String(AString &s)
3010
+ {
3011
+ #ifdef _WIN32
3012
+ if (g_LargePagesMode || g_LargePageSize != 0)
3013
+ {
3014
+ s.Add_OptSpaced("(LP-");
3015
+ PrintSize_KMGT_Or_Hex(s, g_LargePageSize);
3016
+ #ifdef MY_CPU_X86_OR_AMD64
3017
+ if (CPU_IsSupported_PageGB())
3018
+ s += "-1G";
3019
+ #endif
3020
+ if (!g_LargePagesMode)
3021
+ s += "-NA";
3022
+ s += ")";
3023
+ }
3024
+ #else
3025
+ s += "";
3026
+ #endif
3027
+ }
3028
+
3029
+ #endif
3030
+
3031
+
3032
+
3033
+ static void PrintRequirements(IBenchPrintCallback &f, const char *sizeString,
3034
+ bool size_Defined, UInt64 size, const char *threadsString, UInt32 numThreads)
3035
+ {
3036
+ f.Print("RAM ");
3037
+ f.Print(sizeString);
3038
+ if (size_Defined)
3039
+ PrintNumber(f, (size >> 20), 6);
3040
+ else
3041
+ f.Print(" ?");
3042
+ f.Print(" MB");
3043
+
3044
+ #ifdef Z7_LARGE_PAGES
3045
+ {
3046
+ AString s;
3047
+ Add_LargePages_String(s);
3048
+ f.Print(s);
3049
+ }
3050
+ #endif
3051
+
3052
+ f.Print(", # ");
3053
+ f.Print(threadsString);
3054
+ PrintNumber(f, numThreads, 3);
3055
+ }
3056
+
3057
+
3058
+
3059
+ struct CBenchCallbackToPrint Z7_final: public IBenchCallback
3060
+ {
3061
+ bool NeedPrint;
3062
+ bool Use2Columns;
3063
+ bool ShowFreq;
3064
+ unsigned NameFieldSize;
3065
+
3066
+ unsigned EncodeWeight;
3067
+ unsigned DecodeWeight;
3068
+
3069
+ UInt64 CpuFreq;
3070
+ UInt64 DictSize;
3071
+
3072
+ IBenchPrintCallback *_file;
3073
+ CBenchProps BenchProps;
3074
+ CTotalBenchRes EncodeRes;
3075
+ CTotalBenchRes DecodeRes;
3076
+
3077
+ CBenchInfo BenchInfo_Results[2];
3078
+
3079
+ CBenchCallbackToPrint():
3080
+ NeedPrint(true),
3081
+ Use2Columns(false),
3082
+ ShowFreq(false),
3083
+ NameFieldSize(0),
3084
+ EncodeWeight(1),
3085
+ DecodeWeight(1),
3086
+ CpuFreq(0)
3087
+ {}
3088
+
3089
+ void Init() { EncodeRes.Init(); DecodeRes.Init(); }
3090
+ void Print(const char *s);
3091
+ void NewLine();
3092
+
3093
+ HRESULT SetFreq(bool showFreq, UInt64 cpuFreq);
3094
+ HRESULT SetEncodeResult(const CBenchInfo &info, bool final) Z7_override;
3095
+ HRESULT SetDecodeResult(const CBenchInfo &info, bool final) Z7_override;
3096
+ };
3097
+
3098
+ HRESULT CBenchCallbackToPrint::SetFreq(bool showFreq, UInt64 cpuFreq)
3099
+ {
3100
+ ShowFreq = showFreq;
3101
+ CpuFreq = cpuFreq;
3102
+ return S_OK;
3103
+ }
3104
+
3105
+ HRESULT CBenchCallbackToPrint::SetEncodeResult(const CBenchInfo &info, bool final)
3106
+ {
3107
+ RINOK(_file->CheckBreak())
3108
+ if (final)
3109
+ BenchInfo_Results[0] = info;
3110
+ if (final)
3111
+ if (NeedPrint)
3112
+ {
3113
+ const UInt64 rating = BenchProps.GetRating_Enc(DictSize, info.GlobalTime, info.GlobalFreq, info.UnpackSize * info.NumIterations);
3114
+ PrintResults(_file, info,
3115
+ EncodeWeight, rating,
3116
+ ShowFreq, CpuFreq, &EncodeRes);
3117
+ if (!Use2Columns)
3118
+ _file->NewLine();
3119
+ }
3120
+ return S_OK;
3121
+ }
3122
+
3123
+ static const char * const kSep = " | ";
3124
+
3125
+ HRESULT CBenchCallbackToPrint::SetDecodeResult(const CBenchInfo &info, bool final)
3126
+ {
3127
+ RINOK(_file->CheckBreak())
3128
+ if (final)
3129
+ BenchInfo_Results[1] = info;
3130
+ if (final)
3131
+ if (NeedPrint)
3132
+ {
3133
+ const UInt64 rating = BenchProps.GetRating_Dec(info.GlobalTime, info.GlobalFreq, info.UnpackSize, info.PackSize, info.NumIterations);
3134
+ if (Use2Columns)
3135
+ _file->Print(kSep);
3136
+ else
3137
+ PrintSpaces(*_file, NameFieldSize);
3138
+ CBenchInfo info2 = info;
3139
+ info2.UnpackSize *= info2.NumIterations;
3140
+ info2.PackSize *= info2.NumIterations;
3141
+ info2.NumIterations = 1;
3142
+ PrintResults(_file, info2,
3143
+ DecodeWeight, rating,
3144
+ ShowFreq, CpuFreq, &DecodeRes);
3145
+ }
3146
+ return S_OK;
3147
+ }
3148
+
3149
+ void CBenchCallbackToPrint::Print(const char *s)
3150
+ {
3151
+ _file->Print(s);
3152
+ }
3153
+
3154
+ void CBenchCallbackToPrint::NewLine()
3155
+ {
3156
+ _file->NewLine();
3157
+ }
3158
+
3159
+ static void PrintLeft(IBenchPrintCallback &f, const char *s, unsigned size)
3160
+ {
3161
+ f.Print(s);
3162
+ int numSpaces = (int)size - (int)MyStringLen(s);
3163
+ if (numSpaces > 0)
3164
+ PrintSpaces(f, (unsigned)numSpaces);
3165
+ }
3166
+
3167
+ static void PrintRight(IBenchPrintCallback &f, const char *s, unsigned size)
3168
+ {
3169
+ int numSpaces = (int)size - (int)MyStringLen(s);
3170
+ if (numSpaces > 0)
3171
+ PrintSpaces(f, (unsigned)numSpaces);
3172
+ f.Print(s);
3173
+ }
3174
+
3175
+
3176
+ static bool DoesWildcardMatchName_NoCase(const AString &mask, const char *name)
3177
+ {
3178
+ UString wildc = GetUnicodeString(mask);
3179
+ UString bname = GetUnicodeString(name);
3180
+ wildc.MakeLower_Ascii();
3181
+ bname.MakeLower_Ascii();
3182
+ return DoesWildcardMatchName(wildc, bname);
3183
+ }
3184
+
3185
+
3186
+ static HRESULT TotalBench(
3187
+ DECL_EXTERNAL_CODECS_LOC_VARS
3188
+ const COneMethodInfo &methodMask,
3189
+ UInt64 complexInCommands,
3190
+ #ifndef Z7_ST
3191
+ UInt32 numThreads,
3192
+ const CAffinityMode *affinityMode,
3193
+ #endif
3194
+ bool forceUnpackSize,
3195
+ size_t unpackSize,
3196
+ const Byte *fileData,
3197
+ IBenchPrintCallback *printCallback, CBenchCallbackToPrint *callback)
3198
+ {
3199
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_Bench); i++)
3200
+ {
3201
+ const CBenchMethod &bench = g_Bench[i];
3202
+ if (!DoesWildcardMatchName_NoCase(methodMask.MethodName, bench.Name))
3203
+ continue;
3204
+ PrintLeft(*callback->_file, bench.Name, kFieldSize_Name);
3205
+ {
3206
+ unsigned keySize = 32;
3207
+ if (IsString1PrefixedByString2(bench.Name, "AES128")) keySize = 16;
3208
+ else if (IsString1PrefixedByString2(bench.Name, "AES192")) keySize = 24;
3209
+ callback->BenchProps.KeySize = keySize;
3210
+ }
3211
+ callback->BenchProps.DecComplexUnc = bench.DecComplexUnc;
3212
+ callback->BenchProps.DecComplexCompr = bench.DecComplexCompr;
3213
+ callback->BenchProps.EncComplex = bench.EncComplex;
3214
+
3215
+ COneMethodInfo method;
3216
+ NCOM::CPropVariant propVariant;
3217
+ propVariant = bench.Name;
3218
+ RINOK(method.ParseMethodFromPROPVARIANT(UString(), propVariant))
3219
+
3220
+ size_t unpackSize2 = unpackSize;
3221
+ if (!forceUnpackSize && bench.DictBits == 0)
3222
+ unpackSize2 = kFilterUnpackSize;
3223
+
3224
+ callback->EncodeWeight = bench.Weight;
3225
+ callback->DecodeWeight = bench.Weight;
3226
+
3227
+ const HRESULT res = MethodBench(
3228
+ EXTERNAL_CODECS_LOC_VARS
3229
+ complexInCommands,
3230
+ #ifndef Z7_ST
3231
+ false, numThreads, affinityMode,
3232
+ #endif
3233
+ method,
3234
+ unpackSize2, fileData,
3235
+ bench.DictBits,
3236
+ printCallback, callback, &callback->BenchProps);
3237
+
3238
+ if (res == E_NOTIMPL)
3239
+ {
3240
+ // callback->Print(" ---");
3241
+ // we need additional empty line as line for decompression results
3242
+ if (!callback->Use2Columns)
3243
+ callback->NewLine();
3244
+ }
3245
+ else
3246
+ {
3247
+ RINOK(res)
3248
+ }
3249
+
3250
+ callback->NewLine();
3251
+ }
3252
+ return S_OK;
3253
+ }
3254
+
3255
+
3256
+ struct CFreqBench
3257
+ {
3258
+ // in:
3259
+ UInt64 complexInCommands;
3260
+ UInt32 numThreads;
3261
+ bool showFreq;
3262
+ UInt64 specifiedFreq;
3263
+
3264
+ // out:
3265
+ UInt64 CpuFreqRes;
3266
+ UInt64 UsageRes;
3267
+ UInt32 res;
3268
+
3269
+ CFreqBench()
3270
+ {}
3271
+
3272
+ HRESULT FreqBench(IBenchPrintCallback *_file
3273
+ #ifndef Z7_ST
3274
+ , const CAffinityMode *affinityMode
3275
+ #endif
3276
+ );
3277
+ };
3278
+
3279
+
3280
+ HRESULT CFreqBench::FreqBench(IBenchPrintCallback *_file
3281
+ #ifndef Z7_ST
3282
+ , const CAffinityMode *affinityMode
3283
+ #endif
3284
+ )
3285
+ {
3286
+ res = 0;
3287
+ CpuFreqRes = 0;
3288
+ UsageRes = 0;
3289
+
3290
+ if (numThreads == 0)
3291
+ numThreads = 1;
3292
+
3293
+ #ifdef Z7_ST
3294
+ numThreads = 1;
3295
+ #endif
3296
+
3297
+ const UInt32 complexity = kNumFreqCommands;
3298
+ UInt64 numIterations = complexInCommands / complexity;
3299
+ UInt32 numIterations2 = 1 << 30;
3300
+ if (numIterations > numIterations2)
3301
+ numIterations /= numIterations2;
3302
+ else
3303
+ {
3304
+ numIterations2 = (UInt32)numIterations;
3305
+ numIterations = 1;
3306
+ }
3307
+
3308
+ CBenchInfoCalc progressInfoSpec;
3309
+
3310
+ #ifndef Z7_ST
3311
+
3312
+ bool mtMode = (numThreads > 1) || affinityMode->NeedAffinity();
3313
+
3314
+ if (mtMode)
3315
+ {
3316
+ CFreqThreads threads;
3317
+ threads.Items = new CFreqInfo[numThreads];
3318
+ UInt32 i;
3319
+ for (i = 0; i < numThreads; i++)
3320
+ {
3321
+ CFreqInfo &info = threads.Items[i];
3322
+ info.Callback = _file;
3323
+ info.CallbackRes = S_OK;
3324
+ info.NumIterations = numIterations;
3325
+ info.Size = numIterations2;
3326
+ }
3327
+ progressInfoSpec.SetStartTime();
3328
+ for (i = 0; i < numThreads; i++)
3329
+ {
3330
+ // Sleep(10);
3331
+ CFreqInfo &info = threads.Items[i];
3332
+ WRes wres = affinityMode->CreateThread_WithAffinity(info.Thread, FreqThreadFunction, &info, i);
3333
+ if (info.Thread.IsCreated())
3334
+ threads.NumThreads++;
3335
+ if (wres != 0)
3336
+ return HRESULT_FROM_WIN32(wres);
3337
+ }
3338
+ WRes wres = threads.WaitAll();
3339
+ if (wres != 0)
3340
+ return HRESULT_FROM_WIN32(wres);
3341
+ for (i = 0; i < numThreads; i++)
3342
+ {
3343
+ RINOK(threads.Items[i].CallbackRes)
3344
+ }
3345
+ }
3346
+ else
3347
+ #endif
3348
+ {
3349
+ progressInfoSpec.SetStartTime();
3350
+ UInt32 sum = g_BenchCpuFreqTemp;
3351
+ UInt64 k = numIterations;
3352
+ do
3353
+ {
3354
+ sum = CountCpuFreq(sum, numIterations2, g_BenchCpuFreqTemp);
3355
+ if (_file)
3356
+ {
3357
+ RINOK(_file->CheckBreak())
3358
+ }
3359
+ }
3360
+ while (--k);
3361
+ res += sum;
3362
+ }
3363
+
3364
+ if (res == 0x12345678)
3365
+ if (_file)
3366
+ {
3367
+ RINOK(_file->CheckBreak())
3368
+ }
3369
+
3370
+ CBenchInfo info;
3371
+ progressInfoSpec.SetFinishTime(info);
3372
+
3373
+ info.UnpackSize = 0;
3374
+ info.PackSize = 0;
3375
+ info.NumIterations = 1;
3376
+
3377
+ const UInt64 numCommands = (UInt64)numIterations * numIterations2 * numThreads * complexity;
3378
+ const UInt64 rating = info.GetSpeed(numCommands);
3379
+ CpuFreqRes = rating / numThreads;
3380
+ UsageRes = info.GetUsage();
3381
+
3382
+ if (_file)
3383
+ {
3384
+ PrintResults(_file, info,
3385
+ 0, // weight
3386
+ rating,
3387
+ showFreq, showFreq ? (specifiedFreq != 0 ? specifiedFreq : CpuFreqRes) : 0, NULL);
3388
+ RINOK(_file->CheckBreak())
3389
+ }
3390
+
3391
+ return S_OK;
3392
+ }
3393
+
3394
+
3395
+
3396
+ static HRESULT CrcBench(
3397
+ DECL_EXTERNAL_CODECS_LOC_VARS
3398
+ UInt64 complexInCommands,
3399
+ UInt32 numThreads,
3400
+ const size_t bufferSize,
3401
+ const Byte *fileData,
3402
+
3403
+ UInt64 &speed,
3404
+ UInt64 &usage,
3405
+
3406
+ UInt32 complexity, unsigned benchWeight,
3407
+ const UInt32 *checkSum,
3408
+ const COneMethodInfo &method,
3409
+ IBenchPrintCallback *_file,
3410
+ #ifndef Z7_ST
3411
+ const CAffinityMode *affinityMode,
3412
+ #endif
3413
+ bool showRating,
3414
+ CTotalBenchRes *encodeRes,
3415
+ bool showFreq, UInt64 cpuFreq)
3416
+ {
3417
+ if (numThreads == 0)
3418
+ numThreads = 1;
3419
+
3420
+ #ifdef Z7_ST
3421
+ numThreads = 1;
3422
+ #endif
3423
+
3424
+ const AString &methodName = method.MethodName;
3425
+ // methodName.RemoveChar(L'-');
3426
+ CMethodId hashID;
3427
+ if (!FindHashMethod(
3428
+ EXTERNAL_CODECS_LOC_VARS
3429
+ methodName, hashID))
3430
+ return E_NOTIMPL;
3431
+
3432
+ /*
3433
+ // if will generate random data in each thread, instead of global data
3434
+ CMidAlignedBuffer buffer;
3435
+ if (!fileData)
3436
+ {
3437
+ ALLOC_WITH_HRESULT(&buffer, bufferSize)
3438
+ RandGen(buffer, bufferSize);
3439
+ fileData = buffer;
3440
+ }
3441
+ */
3442
+
3443
+ const size_t bsize = (bufferSize == 0 ? 1 : bufferSize);
3444
+ UInt64 numIterations = complexInCommands * k_Hash_Complex_Mult / complexity / bsize;
3445
+ if (numIterations == 0)
3446
+ numIterations = 1;
3447
+
3448
+ CBenchInfoCalc progressInfoSpec;
3449
+ CBenchInfo info;
3450
+
3451
+ #ifndef Z7_ST
3452
+ bool mtEncMode = (numThreads > 1) || affinityMode->NeedAffinity();
3453
+
3454
+ if (mtEncMode)
3455
+ {
3456
+ CCrcThreads threads;
3457
+ threads.Items = new CCrcInfo[numThreads];
3458
+ {
3459
+ WRes wres = threads.Common.StartEvent.Create();
3460
+ if (wres != 0)
3461
+ return HRESULT_FROM_WIN32(wres);
3462
+ threads.NeedClose = true;
3463
+ }
3464
+
3465
+ UInt32 i;
3466
+ for (i = 0; i < numThreads; i++)
3467
+ {
3468
+ CCrcInfo &ci = threads.Items[i];
3469
+ AString name;
3470
+ RINOK(CreateHasher(EXTERNAL_CODECS_LOC_VARS hashID, name, ci.Hasher))
3471
+ if (!ci.Hasher)
3472
+ return E_NOTIMPL;
3473
+ CMyComPtr<ICompressSetCoderProperties> scp;
3474
+ ci.Hasher.QueryInterface(IID_ICompressSetCoderProperties, &scp);
3475
+ if (scp)
3476
+ {
3477
+ RINOK(method.SetCoderProps(scp))
3478
+ }
3479
+
3480
+ ci.Callback = _file;
3481
+ ci.Data = fileData;
3482
+ ci.NumIterations = numIterations;
3483
+ ci.Size = bufferSize;
3484
+ ci.CheckSumDefined = false;
3485
+ if (checkSum)
3486
+ {
3487
+ ci.CheckSum = *checkSum;
3488
+ ci.CheckSumDefined = true;
3489
+ }
3490
+
3491
+ #ifdef USE_ALLOCA
3492
+ ci.AllocaSize = BENCH_ALLOCA_VALUE(i);
3493
+ #endif
3494
+ }
3495
+
3496
+ for (i = 0; i < numThreads; i++)
3497
+ {
3498
+ CCrcInfo &ci = threads.Items[i];
3499
+ ci.ThreadIndex = i;
3500
+ ci.Common = &threads.Common;
3501
+ ci.AffinityMode = *affinityMode;
3502
+ HRESULT hres = ci.CreateThread();
3503
+ if (ci.Thread.IsCreated())
3504
+ threads.NumThreads++;
3505
+ if (hres != 0)
3506
+ return hres;
3507
+ }
3508
+
3509
+ for (i = 0; i < numThreads; i++)
3510
+ {
3511
+ CCrcInfo &ci = threads.Items[i];
3512
+ WRes wres = ci.ReadyEvent.Lock();
3513
+ if (wres != 0)
3514
+ return HRESULT_FROM_WIN32(wres);
3515
+ RINOK(ci.Res)
3516
+ }
3517
+
3518
+ progressInfoSpec.SetStartTime();
3519
+
3520
+ WRes wres = threads.StartAndWait();
3521
+ if (wres != 0)
3522
+ return HRESULT_FROM_WIN32(wres);
3523
+
3524
+ progressInfoSpec.SetFinishTime(info);
3525
+
3526
+ for (i = 0; i < numThreads; i++)
3527
+ {
3528
+ RINOK(threads.Items[i].Res)
3529
+ if (i != 0)
3530
+ if (threads.Items[i].CheckSum_Res !=
3531
+ threads.Items[i - 1].CheckSum_Res)
3532
+ return S_FALSE;
3533
+ }
3534
+ }
3535
+ else
3536
+ #endif
3537
+ {
3538
+ CMyComPtr<IHasher> hasher;
3539
+ AString name;
3540
+ RINOK(CreateHasher(EXTERNAL_CODECS_LOC_VARS hashID, name, hasher))
3541
+ if (!hasher)
3542
+ return E_NOTIMPL;
3543
+ CMyComPtr<ICompressSetCoderProperties> scp;
3544
+ hasher.QueryInterface(IID_ICompressSetCoderProperties, &scp);
3545
+ if (scp)
3546
+ {
3547
+ RINOK(method.SetCoderProps(scp))
3548
+ }
3549
+ CCrcInfo_Base crcib;
3550
+ crcib.CreateLocalBuf = false;
3551
+ RINOK(crcib.Generate(fileData, bufferSize))
3552
+ progressInfoSpec.SetStartTime();
3553
+ RINOK(crcib.CrcProcess(numIterations, checkSum, hasher, _file))
3554
+ progressInfoSpec.SetFinishTime(info);
3555
+ }
3556
+
3557
+
3558
+ UInt64 unpSize = numIterations * bufferSize;
3559
+ UInt64 unpSizeThreads = unpSize * numThreads;
3560
+ info.UnpackSize = unpSizeThreads;
3561
+ info.PackSize = unpSizeThreads;
3562
+ info.NumIterations = 1;
3563
+
3564
+ if (_file)
3565
+ {
3566
+ if (showRating)
3567
+ {
3568
+ UInt64 unpSizeThreads2 = unpSizeThreads;
3569
+ if (unpSizeThreads2 == 0)
3570
+ unpSizeThreads2 = numIterations * 1 * numThreads;
3571
+ const UInt64 numCommands = unpSizeThreads2 * complexity / 256;
3572
+ const UInt64 rating = info.GetSpeed(numCommands);
3573
+ PrintResults(_file, info,
3574
+ benchWeight, rating,
3575
+ showFreq, cpuFreq, encodeRes);
3576
+ }
3577
+ RINOK(_file->CheckBreak())
3578
+ }
3579
+
3580
+ speed = info.GetSpeed(unpSizeThreads);
3581
+ usage = info.GetUsage();
3582
+
3583
+ return S_OK;
3584
+ }
3585
+
3586
+
3587
+
3588
+ static HRESULT TotalBench_Hash(
3589
+ DECL_EXTERNAL_CODECS_LOC_VARS
3590
+ const COneMethodInfo &methodMask,
3591
+ UInt64 complexInCommands,
3592
+ UInt32 numThreads,
3593
+ size_t bufSize,
3594
+ const Byte *fileData,
3595
+ IBenchPrintCallback *printCallback, CBenchCallbackToPrint *callback,
3596
+ #ifndef Z7_ST
3597
+ const CAffinityMode *affinityMode,
3598
+ #endif
3599
+ CTotalBenchRes *encodeRes,
3600
+ bool showFreq, UInt64 cpuFreq)
3601
+ {
3602
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_Hash); i++)
3603
+ {
3604
+ const CBenchHash &bench = g_Hash[i];
3605
+ if (!DoesWildcardMatchName_NoCase(methodMask.MethodName, bench.Name))
3606
+ continue;
3607
+ PrintLeft(*callback->_file, bench.Name, kFieldSize_Name);
3608
+ // callback->BenchProps.DecComplexUnc = bench.DecComplexUnc;
3609
+ // callback->BenchProps.DecComplexCompr = bench.DecComplexCompr;
3610
+ // callback->BenchProps.EncComplex = bench.EncComplex;
3611
+
3612
+ COneMethodInfo method;
3613
+ NCOM::CPropVariant propVariant;
3614
+ propVariant = bench.Name;
3615
+ RINOK(method.ParseMethodFromPROPVARIANT(UString(), propVariant))
3616
+
3617
+ UInt64 speed, usage;
3618
+
3619
+ const HRESULT res = CrcBench(
3620
+ EXTERNAL_CODECS_LOC_VARS
3621
+ complexInCommands,
3622
+ numThreads, bufSize, fileData,
3623
+ speed, usage,
3624
+ bench.Complex, bench.Weight,
3625
+ (!fileData && bufSize == (1 << kNumHashDictBits)) ? &bench.CheckSum : NULL,
3626
+ method,
3627
+ printCallback,
3628
+ #ifndef Z7_ST
3629
+ affinityMode,
3630
+ #endif
3631
+ true, // showRating
3632
+ encodeRes, showFreq, cpuFreq);
3633
+ if (res == E_NOTIMPL)
3634
+ {
3635
+ // callback->Print(" ---");
3636
+ }
3637
+ else
3638
+ {
3639
+ RINOK(res)
3640
+ }
3641
+ callback->NewLine();
3642
+ }
3643
+ return S_OK;
3644
+ }
3645
+
3646
+ struct CTempValues
3647
+ {
3648
+ UInt64 *Values;
3649
+ CTempValues(): Values(NULL) {}
3650
+ void Alloc(UInt32 num) { Values = new UInt64[num]; }
3651
+ ~CTempValues() { delete []Values; }
3652
+ };
3653
+
3654
+ static void ParseNumberString(const UString &s, NCOM::CPropVariant &prop)
3655
+ {
3656
+ const wchar_t *end;
3657
+ UInt64 result = ConvertStringToUInt64(s, &end);
3658
+ if (*end != 0 || s.IsEmpty())
3659
+ prop = s;
3660
+ else if (result <= (UInt32)0xFFFFFFFF)
3661
+ prop = (UInt32)result;
3662
+ else
3663
+ prop = result;
3664
+ }
3665
+
3666
+
3667
+ static bool AreSameMethodNames(const char *fullName, const char *shortName)
3668
+ {
3669
+ return StringsAreEqualNoCase_Ascii(fullName, shortName);
3670
+ }
3671
+
3672
+
3673
+
3674
+
3675
+ static void Print_Usage_and_Threads(IBenchPrintCallback &f, UInt64 usage, UInt32 threads)
3676
+ {
3677
+ PrintRequirements(f, "usage:", true, usage, "Benchmark threads: ", threads);
3678
+ }
3679
+
3680
+
3681
+ static void Print_Delimiter(IBenchPrintCallback &f)
3682
+ {
3683
+ f.Print(" |");
3684
+ }
3685
+
3686
+ static void Print_Pow(IBenchPrintCallback &f, unsigned pow)
3687
+ {
3688
+ char s[16];
3689
+ ConvertUInt32ToString(pow, s);
3690
+ unsigned pos = MyStringLen(s);
3691
+ s[pos++] = ':';
3692
+ s[pos] = 0;
3693
+ PrintLeft(f, s, kFieldSize_SmallName); // 4
3694
+ }
3695
+
3696
+ static void Bench_BW_Print_Usage_Speed(IBenchPrintCallback &f,
3697
+ UInt64 usage, UInt64 speed)
3698
+ {
3699
+ PrintUsage(f, usage, kFieldSize_Usage);
3700
+ PrintNumber(f, speed / 1000000, kFieldSize_CrcSpeed);
3701
+ }
3702
+
3703
+
3704
+ HRESULT Bench(
3705
+ DECL_EXTERNAL_CODECS_LOC_VARS
3706
+ IBenchPrintCallback *printCallback,
3707
+ IBenchCallback *benchCallback,
3708
+ const CObjectVector<CProperty> &props,
3709
+ UInt32 numIterations,
3710
+ bool multiDict,
3711
+ IBenchFreqCallback *freqCallback)
3712
+ {
3713
+ // for (int y = 0; y < 10000; y++)
3714
+ if (!CrcInternalTest())
3715
+ return E_FAIL;
3716
+
3717
+ UInt32 numCPUs = 1;
3718
+ size_t ramSize = (size_t)sizeof(size_t) << 29;
3719
+
3720
+ NSystem::CProcessAffinity threadsInfo;
3721
+ threadsInfo.InitST();
3722
+
3723
+ #ifndef Z7_ST
3724
+
3725
+ if (threadsInfo.Get() && threadsInfo.GetNumProcessThreads() != 0)
3726
+ numCPUs = threadsInfo.GetNumProcessThreads();
3727
+ else
3728
+ numCPUs = NSystem::GetNumberOfProcessors();
3729
+
3730
+ #endif
3731
+
3732
+ // numCPUs = 24;
3733
+ /*
3734
+ {
3735
+ DWORD_PTR mask = (1 << 0);
3736
+ DWORD_PTR old = SetThreadAffinityMask(GetCurrentThread(), mask);
3737
+ old = old;
3738
+ DWORD_PTR old2 = SetThreadAffinityMask(GetCurrentThread(), mask);
3739
+ old2 = old2;
3740
+ return 0;
3741
+ }
3742
+ */
3743
+
3744
+ const bool ramSize_Defined = NSystem::GetRamSize(ramSize);
3745
+
3746
+ UInt32 numThreadsSpecified = numCPUs;
3747
+ bool needSetComplexity = false;
3748
+ UInt32 testTimeMs = kComplexInMs;
3749
+ UInt32 startDicLog = 22;
3750
+ bool startDicLog_Defined = false;
3751
+ UInt64 specifiedFreq = 0;
3752
+ bool multiThreadTests = false;
3753
+ UInt64 complexInCommands = kComplexInCommands;
3754
+ UInt32 numThreads_Start = 1;
3755
+
3756
+ #ifndef Z7_ST
3757
+ CAffinityMode affinityMode;
3758
+ #endif
3759
+
3760
+
3761
+ COneMethodInfo method;
3762
+
3763
+ CMidAlignedBuffer fileDataBuffer;
3764
+ bool use_fileData = false;
3765
+ bool isFixedDict = false;
3766
+
3767
+ {
3768
+ unsigned i;
3769
+
3770
+ if (printCallback)
3771
+ {
3772
+ for (i = 0; i < props.Size(); i++)
3773
+ {
3774
+ const CProperty &property = props[i];
3775
+ printCallback->Print(" ");
3776
+ printCallback->Print(GetAnsiString(property.Name));
3777
+ if (!property.Value.IsEmpty())
3778
+ {
3779
+ printCallback->Print("=");
3780
+ printCallback->Print(GetAnsiString(property.Value));
3781
+ }
3782
+ }
3783
+ if (!props.IsEmpty())
3784
+ printCallback->NewLine();
3785
+ }
3786
+
3787
+
3788
+ for (i = 0; i < props.Size(); i++)
3789
+ {
3790
+ const CProperty &property = props[i];
3791
+ UString name (property.Name);
3792
+ name.MakeLower_Ascii();
3793
+
3794
+ if (name.IsEqualTo("file"))
3795
+ {
3796
+ if (property.Value.IsEmpty())
3797
+ return E_INVALIDARG;
3798
+
3799
+ NFile::NIO::CInFile file;
3800
+ if (!file.Open(us2fs(property.Value)))
3801
+ return GetLastError_noZero_HRESULT();
3802
+ size_t len;
3803
+ {
3804
+ UInt64 len64;
3805
+ if (!file.GetLength(len64))
3806
+ return GetLastError_noZero_HRESULT();
3807
+ if (printCallback)
3808
+ {
3809
+ printCallback->Print("file size =");
3810
+ PrintNumber(*printCallback, len64, 0);
3811
+ printCallback->NewLine();
3812
+ }
3813
+ len = (size_t)len64;
3814
+ if (len != len64)
3815
+ return E_INVALIDARG;
3816
+ }
3817
+
3818
+ // (len == 0) is allowed. Also it's allowed if Alloc(0) returns NULL here
3819
+
3820
+ ALLOC_WITH_HRESULT(&fileDataBuffer, len)
3821
+ use_fileData = true;
3822
+
3823
+ {
3824
+ size_t processed;
3825
+ if (!file.ReadFull((Byte *)fileDataBuffer, len, processed))
3826
+ return GetLastError_noZero_HRESULT();
3827
+ if (processed != len)
3828
+ return E_FAIL;
3829
+ }
3830
+ continue;
3831
+ }
3832
+
3833
+ NCOM::CPropVariant propVariant;
3834
+ if (!property.Value.IsEmpty())
3835
+ ParseNumberString(property.Value, propVariant);
3836
+
3837
+ if (name.IsEqualTo("time"))
3838
+ {
3839
+ RINOK(ParsePropToUInt32(UString(), propVariant, testTimeMs))
3840
+ needSetComplexity = true;
3841
+ testTimeMs *= 1000;
3842
+ continue;
3843
+ }
3844
+
3845
+ if (name.IsEqualTo("timems"))
3846
+ {
3847
+ RINOK(ParsePropToUInt32(UString(), propVariant, testTimeMs))
3848
+ needSetComplexity = true;
3849
+ continue;
3850
+ }
3851
+
3852
+ if (name.IsEqualTo("tic"))
3853
+ {
3854
+ UInt32 v;
3855
+ RINOK(ParsePropToUInt32(UString(), propVariant, v))
3856
+ if (v >= 64)
3857
+ return E_INVALIDARG;
3858
+ complexInCommands = (UInt64)1 << v;
3859
+ continue;
3860
+ }
3861
+
3862
+ const bool isCurrent_fixedDict = name.IsEqualTo("df");
3863
+ if (isCurrent_fixedDict)
3864
+ isFixedDict = true;
3865
+ if (isCurrent_fixedDict || name.IsEqualTo("ds"))
3866
+ {
3867
+ RINOK(ParsePropToUInt32(UString(), propVariant, startDicLog))
3868
+ if (startDicLog > 32)
3869
+ return E_INVALIDARG;
3870
+ startDicLog_Defined = true;
3871
+ continue;
3872
+ }
3873
+
3874
+ if (name.IsEqualTo("mts"))
3875
+ {
3876
+ RINOK(ParsePropToUInt32(UString(), propVariant, numThreads_Start))
3877
+ continue;
3878
+ }
3879
+
3880
+ if (name.IsEqualTo("af"))
3881
+ {
3882
+ UInt32 bundle;
3883
+ RINOK(ParsePropToUInt32(UString(), propVariant, bundle))
3884
+ if (bundle > 0 && bundle < numCPUs)
3885
+ {
3886
+ #ifndef Z7_ST
3887
+ affinityMode.SetLevels(numCPUs, 2);
3888
+ affinityMode.NumBundleThreads = bundle;
3889
+ #endif
3890
+ }
3891
+ continue;
3892
+ }
3893
+
3894
+ if (name.IsEqualTo("freq"))
3895
+ {
3896
+ UInt32 freq32 = 0;
3897
+ RINOK(ParsePropToUInt32(UString(), propVariant, freq32))
3898
+ if (freq32 == 0)
3899
+ return E_INVALIDARG;
3900
+ specifiedFreq = (UInt64)freq32 * 1000000;
3901
+
3902
+ if (printCallback)
3903
+ {
3904
+ printCallback->Print("freq=");
3905
+ PrintNumber(*printCallback, freq32, 0);
3906
+ printCallback->NewLine();
3907
+ }
3908
+
3909
+ continue;
3910
+ }
3911
+
3912
+ if (name.IsPrefixedBy_Ascii_NoCase("mt"))
3913
+ {
3914
+ const UString s = name.Ptr(2);
3915
+ if (s.IsEqualTo("*")
3916
+ || (s.IsEmpty()
3917
+ && propVariant.vt == VT_BSTR
3918
+ && StringsAreEqual_Ascii(propVariant.bstrVal, "*")))
3919
+ {
3920
+ multiThreadTests = true;
3921
+ continue;
3922
+ }
3923
+ #ifndef Z7_ST
3924
+ RINOK(ParseMtProp(s, propVariant, numCPUs, numThreadsSpecified))
3925
+ #endif
3926
+ continue;
3927
+ }
3928
+
3929
+ RINOK(method.ParseMethodFromPROPVARIANT(name, propVariant))
3930
+ }
3931
+ }
3932
+
3933
+ if (printCallback)
3934
+ {
3935
+ AString s;
3936
+
3937
+ #if 1 || !defined(Z7_MSC_VER_ORIGINAL) || (Z7_MSC_VER_ORIGINAL >= 1900)
3938
+ s += "Compiler: ";
3939
+ GetCompiler(s);
3940
+ printCallback->Print(s);
3941
+ printCallback->NewLine();
3942
+ s.Empty();
3943
+ #endif
3944
+
3945
+ GetSystemInfoText(s);
3946
+ printCallback->Print(s);
3947
+ printCallback->NewLine();
3948
+ }
3949
+
3950
+ if (printCallback)
3951
+ {
3952
+ printCallback->Print("1T CPU Freq (MHz):");
3953
+ }
3954
+
3955
+ if (printCallback || freqCallback)
3956
+ {
3957
+ UInt64 numMilCommands = 1 << 6;
3958
+ if (specifiedFreq != 0)
3959
+ {
3960
+ while (numMilCommands > 1 && specifiedFreq < (numMilCommands * 1000000))
3961
+ numMilCommands >>= 1;
3962
+ }
3963
+
3964
+ for (int jj = 0;; jj++)
3965
+ {
3966
+ if (printCallback)
3967
+ RINOK(printCallback->CheckBreak())
3968
+
3969
+ UInt64 start = ::GetTimeCount();
3970
+ UInt32 sum = (UInt32)start;
3971
+ sum = CountCpuFreq(sum, (UInt32)(numMilCommands * 1000000 / kNumFreqCommands), g_BenchCpuFreqTemp);
3972
+ if (sum == 0xF1541213)
3973
+ if (printCallback)
3974
+ printCallback->Print("");
3975
+ const UInt64 realDelta = ::GetTimeCount() - start;
3976
+ start = realDelta;
3977
+ if (start == 0)
3978
+ start = 1;
3979
+ if (start > (UInt64)1 << 61)
3980
+ start = 1;
3981
+ const UInt64 freq = GetFreq();
3982
+ // mips is constant in some compilers
3983
+ const UInt64 hzVal = MyMultDiv64(numMilCommands * 1000000, freq, start);
3984
+ const UInt64 mipsVal = numMilCommands * freq / start;
3985
+ if (printCallback)
3986
+ {
3987
+ if (realDelta == 0)
3988
+ {
3989
+ printCallback->Print(" -");
3990
+ }
3991
+ else
3992
+ {
3993
+ // PrintNumber(*printCallback, start, 0);
3994
+ PrintNumber(*printCallback, mipsVal, 5);
3995
+ }
3996
+ }
3997
+ if (freqCallback)
3998
+ {
3999
+ RINOK(freqCallback->AddCpuFreq(1, hzVal, kBenchmarkUsageMult))
4000
+ }
4001
+
4002
+ if (jj >= 1)
4003
+ {
4004
+ bool needStop = (numMilCommands >= (1 <<
4005
+ #ifdef _DEBUG
4006
+ 7
4007
+ #else
4008
+ 11
4009
+ #endif
4010
+ ));
4011
+ if (start >= freq * 16)
4012
+ {
4013
+ printCallback->Print(" (Cmplx)");
4014
+ if (!freqCallback) // we don't want complexity change for old gui lzma benchmark
4015
+ {
4016
+ needSetComplexity = true;
4017
+ }
4018
+ needStop = true;
4019
+ }
4020
+ if (needSetComplexity)
4021
+ SetComplexCommandsMs(testTimeMs, false, mipsVal * 1000000, complexInCommands);
4022
+ if (needStop)
4023
+ break;
4024
+ numMilCommands <<= 1;
4025
+ }
4026
+ }
4027
+ if (freqCallback)
4028
+ {
4029
+ RINOK(freqCallback->FreqsFinished(1))
4030
+ }
4031
+ }
4032
+
4033
+ if (printCallback || freqCallback)
4034
+ for (unsigned test = 0; test < 3; test++)
4035
+ {
4036
+ if (numThreadsSpecified < 2)
4037
+ {
4038
+ // if (test == 1)
4039
+ break;
4040
+ }
4041
+ if (test == 2 && numThreadsSpecified <= numCPUs)
4042
+ break;
4043
+ if (printCallback)
4044
+ printCallback->NewLine();
4045
+
4046
+ /* it can show incorrect frequency for HT threads. */
4047
+
4048
+ UInt32 numThreads = numThreadsSpecified;
4049
+ if (test < 2)
4050
+ {
4051
+ if (numThreads >= numCPUs)
4052
+ numThreads = numCPUs;
4053
+ if (test == 0)
4054
+ numThreads /= 2;
4055
+ }
4056
+ if (numThreads < 1)
4057
+ numThreads = 1;
4058
+
4059
+ if (printCallback)
4060
+ {
4061
+ char s[128];
4062
+ ConvertUInt64ToString(numThreads, s);
4063
+ printCallback->Print(s);
4064
+ printCallback->Print("T CPU Freq (MHz):");
4065
+ }
4066
+ UInt64 numMilCommands = 1 <<
4067
+ #ifdef _DEBUG
4068
+ 7;
4069
+ #else
4070
+ 10;
4071
+ #endif
4072
+
4073
+ if (specifiedFreq != 0)
4074
+ {
4075
+ while (numMilCommands > 1 && specifiedFreq < (numMilCommands * 1000000))
4076
+ numMilCommands >>= 1;
4077
+ }
4078
+
4079
+ // for (int jj = 0;; jj++)
4080
+ for (;;)
4081
+ {
4082
+ if (printCallback)
4083
+ RINOK(printCallback->CheckBreak())
4084
+
4085
+ {
4086
+ // PrintLeft(f, "CPU", kFieldSize_Name);
4087
+
4088
+ // UInt32 resVal;
4089
+
4090
+ CFreqBench fb;
4091
+ fb.complexInCommands = numMilCommands * 1000000;
4092
+ fb.numThreads = numThreads;
4093
+ // showFreq;
4094
+ // fb.showFreq = (freqTest == kNumCpuTests - 1 || specifiedFreq != 0);
4095
+ fb.showFreq = true;
4096
+ fb.specifiedFreq = 1;
4097
+
4098
+ const HRESULT res = fb.FreqBench(NULL /* printCallback */
4099
+ #ifndef Z7_ST
4100
+ , &affinityMode
4101
+ #endif
4102
+ );
4103
+ RINOK(res)
4104
+
4105
+ if (freqCallback)
4106
+ {
4107
+ RINOK(freqCallback->AddCpuFreq(numThreads, fb.CpuFreqRes, fb.UsageRes))
4108
+ }
4109
+
4110
+ if (printCallback)
4111
+ {
4112
+ /*
4113
+ if (realDelta == 0)
4114
+ {
4115
+ printCallback->Print(" -");
4116
+ }
4117
+ else
4118
+ */
4119
+ {
4120
+ // PrintNumber(*printCallback, start, 0);
4121
+ PrintUsage(*printCallback, fb.UsageRes, 3);
4122
+ printCallback->Print("%");
4123
+ PrintNumber(*printCallback, fb.CpuFreqRes / 1000000, 0);
4124
+ printCallback->Print(" ");
4125
+
4126
+ // PrintNumber(*printCallback, fb.UsageRes, 5);
4127
+ }
4128
+ }
4129
+ }
4130
+ // if (jj >= 1)
4131
+ {
4132
+ const bool needStop = (numMilCommands >= (1 <<
4133
+ #ifdef _DEBUG
4134
+ 7
4135
+ #else
4136
+ 11
4137
+ #endif
4138
+ ));
4139
+ if (needStop)
4140
+ break;
4141
+ numMilCommands <<= 1;
4142
+ }
4143
+ }
4144
+ if (freqCallback)
4145
+ {
4146
+ RINOK(freqCallback->FreqsFinished(numThreads))
4147
+ }
4148
+ }
4149
+
4150
+
4151
+ if (printCallback)
4152
+ {
4153
+ printCallback->NewLine();
4154
+ printCallback->NewLine();
4155
+ PrintRequirements(*printCallback, "size: ", ramSize_Defined, ramSize, "CPU hardware threads:", numCPUs);
4156
+ printCallback->Print(GetProcessThreadsInfo(threadsInfo));
4157
+ printCallback->NewLine();
4158
+ }
4159
+
4160
+ if (numThreadsSpecified < 1 || numThreadsSpecified > kNumThreadsMax)
4161
+ return E_INVALIDARG;
4162
+
4163
+ UInt64 dict = (UInt64)1 << startDicLog;
4164
+ const bool dictIsDefined = (isFixedDict || method.Get_DicSize(dict));
4165
+
4166
+ const unsigned level = method.GetLevel();
4167
+
4168
+ AString &methodName = method.MethodName;
4169
+ const AString original_MethodName = methodName;
4170
+ if (methodName.IsEmpty())
4171
+ methodName = "LZMA";
4172
+
4173
+ if (benchCallback)
4174
+ {
4175
+ CBenchProps benchProps;
4176
+ benchProps.SetLzmaCompexity();
4177
+ const UInt64 dictSize = method.Get_Lzma_DicSize();
4178
+
4179
+ size_t uncompressedDataSize;
4180
+ if (use_fileData)
4181
+ {
4182
+ uncompressedDataSize = fileDataBuffer.Size();
4183
+ }
4184
+ else
4185
+ {
4186
+ uncompressedDataSize = kAdditionalSize + (size_t)dictSize;
4187
+ if (uncompressedDataSize < dictSize)
4188
+ return E_INVALIDARG;
4189
+ }
4190
+
4191
+ return MethodBench(
4192
+ EXTERNAL_CODECS_LOC_VARS
4193
+ complexInCommands,
4194
+ #ifndef Z7_ST
4195
+ true, numThreadsSpecified,
4196
+ &affinityMode,
4197
+ #endif
4198
+ method,
4199
+ uncompressedDataSize, (const Byte *)fileDataBuffer,
4200
+ kOldLzmaDictBits, printCallback, benchCallback, &benchProps);
4201
+ }
4202
+
4203
+ if (methodName.IsEqualTo_Ascii_NoCase("CRC"))
4204
+ methodName = "crc32";
4205
+
4206
+ CMethodId hashID;
4207
+ const bool isHashMethod = FindHashMethod(EXTERNAL_CODECS_LOC_VARS methodName, hashID);
4208
+ int codecIndex = -1;
4209
+ bool isFilter = false;
4210
+ if (!isHashMethod)
4211
+ {
4212
+ UInt32 numStreams;
4213
+ codecIndex = FindMethod_Index(EXTERNAL_CODECS_LOC_VARS original_MethodName,
4214
+ true, // encode
4215
+ hashID, numStreams, isFilter);
4216
+ // we can allow non filter for BW tests
4217
+ if (!isFilter) codecIndex = -1;
4218
+ }
4219
+
4220
+ CBenchCallbackToPrint callback;
4221
+ callback.Init();
4222
+ callback._file = printCallback;
4223
+
4224
+ if (isHashMethod || codecIndex != -1)
4225
+ {
4226
+ if (!printCallback)
4227
+ return S_FALSE;
4228
+ IBenchPrintCallback &f = *printCallback;
4229
+
4230
+ UInt64 dict64 = dict;
4231
+ if (!dictIsDefined)
4232
+ dict64 = (1 << 27);
4233
+ if (use_fileData)
4234
+ {
4235
+ if (!dictIsDefined)
4236
+ dict64 = fileDataBuffer.Size();
4237
+ else if (dict64 > fileDataBuffer.Size())
4238
+ dict64 = fileDataBuffer.Size();
4239
+ }
4240
+
4241
+ for (;;)
4242
+ {
4243
+ const int index = method.FindProp(NCoderPropID::kDictionarySize);
4244
+ if (index < 0)
4245
+ break;
4246
+ method.Props.Delete((unsigned)index);
4247
+ }
4248
+
4249
+ // methodName.RemoveChar(L'-');
4250
+ Int32 complexity = 16 * k_Hash_Complex_Mult; // for unknown hash method
4251
+ const UInt32 *checkSum = NULL;
4252
+ int benchIndex = -1;
4253
+
4254
+ if (isHashMethod)
4255
+ {
4256
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_Hash); i++)
4257
+ {
4258
+ const CBenchHash &h = g_Hash[i];
4259
+ AString benchMethod (h.Name);
4260
+ AString benchProps;
4261
+ const int propPos = benchMethod.Find(':');
4262
+ if (propPos >= 0)
4263
+ {
4264
+ benchProps = benchMethod.Ptr((unsigned)(propPos + 1));
4265
+ benchMethod.DeleteFrom((unsigned)propPos);
4266
+ }
4267
+
4268
+ if (AreSameMethodNames(benchMethod, methodName))
4269
+ {
4270
+ const bool sameProps = method.PropsString.IsEqualTo_Ascii_NoCase(benchProps);
4271
+ /*
4272
+ bool isMainMethod = method.PropsString.IsEmpty();
4273
+ if (isMainMethod)
4274
+ isMainMethod = !checkSum
4275
+ || (benchMethod.IsEqualTo_Ascii_NoCase("crc32") && benchProps.IsEqualTo_Ascii_NoCase("8"));
4276
+ if (sameProps || isMainMethod)
4277
+ */
4278
+ {
4279
+ complexity = (Int32)h.Complex;
4280
+ checkSum = &h.CheckSum;
4281
+ if (sameProps)
4282
+ break;
4283
+ /*
4284
+ if property. is not specified, we use the complexity
4285
+ for latest fastest method (crc32:64)
4286
+ */
4287
+ }
4288
+ }
4289
+ }
4290
+ // if (!checkSum) return E_NOTIMPL;
4291
+ }
4292
+ else
4293
+ {
4294
+ for (unsigned i = 0; i < Z7_ARRAY_SIZE(g_Bench); i++)
4295
+ {
4296
+ const CBenchMethod &bench = g_Bench[i];
4297
+ AString benchMethod (bench.Name);
4298
+ AString benchProps;
4299
+ const int propPos = benchMethod.Find(':');
4300
+ if (propPos >= 0)
4301
+ {
4302
+ benchProps = benchMethod.Ptr((unsigned)(propPos + 1));
4303
+ benchMethod.DeleteFrom((unsigned)propPos);
4304
+ }
4305
+
4306
+ if (AreSameMethodNames(benchMethod, methodName))
4307
+ {
4308
+ const bool sameProps = method.PropsString.IsEqualTo_Ascii_NoCase(benchProps);
4309
+ // bool isMainMethod = method.PropsString.IsEmpty();
4310
+ // if (sameProps || isMainMethod)
4311
+ {
4312
+ benchIndex = (int)i;
4313
+ if (sameProps)
4314
+ break;
4315
+ }
4316
+ }
4317
+ }
4318
+ // if (benchIndex < 0) return E_NOTIMPL;
4319
+ }
4320
+
4321
+ {
4322
+ /* we count usage only for crc and filter. non-filters are not supported */
4323
+ UInt64 usage = (1 << 20);
4324
+ UInt64 bufSize = dict64;
4325
+ UInt32 numBlocks = isHashMethod ? 1 : 3;
4326
+ if (use_fileData)
4327
+ {
4328
+ usage += fileDataBuffer.Size();
4329
+ if (bufSize > fileDataBuffer.Size())
4330
+ bufSize = fileDataBuffer.Size();
4331
+ if (isHashMethod)
4332
+ {
4333
+ numBlocks = 0;
4334
+ #ifndef Z7_ST
4335
+ if (numThreadsSpecified != 1)
4336
+ numBlocks = (k_Crc_CreateLocalBuf_For_File ? 1 : 0);
4337
+ #endif
4338
+ }
4339
+ }
4340
+ usage += numThreadsSpecified * bufSize * numBlocks;
4341
+ Print_Usage_and_Threads(f, usage, numThreadsSpecified);
4342
+ }
4343
+
4344
+ CUIntVector numThreadsVector;
4345
+ {
4346
+ unsigned nt = numThreads_Start;
4347
+ for (;;)
4348
+ {
4349
+ if (nt > numThreadsSpecified)
4350
+ break;
4351
+ numThreadsVector.Add(nt);
4352
+ const unsigned next = nt * 2;
4353
+ const UInt32 ntHalf= numThreadsSpecified / 2;
4354
+ if (ntHalf > nt && ntHalf < next)
4355
+ numThreadsVector.Add(ntHalf);
4356
+ if (numThreadsSpecified > nt && numThreadsSpecified < next)
4357
+ numThreadsVector.Add(numThreadsSpecified);
4358
+ nt = next;
4359
+ }
4360
+ }
4361
+
4362
+ unsigned numColumns = isHashMethod ? 1 : 2;
4363
+ CTempValues speedTotals;
4364
+ CTempValues usageTotals;
4365
+ {
4366
+ const unsigned numItems = numThreadsVector.Size() * numColumns;
4367
+ speedTotals.Alloc(numItems);
4368
+ usageTotals.Alloc(numItems);
4369
+ for (unsigned i = 0; i < numItems; i++)
4370
+ {
4371
+ speedTotals.Values[i] = 0;
4372
+ usageTotals.Values[i] = 0;
4373
+ }
4374
+ }
4375
+
4376
+ f.NewLine();
4377
+ for (unsigned line = 0; line < 3; line++)
4378
+ {
4379
+ f.NewLine();
4380
+ f.Print(line == 0 ? "THRD" : line == 1 ? " " : "Size");
4381
+ FOR_VECTOR (ti, numThreadsVector)
4382
+ {
4383
+ if (ti != 0)
4384
+ Print_Delimiter(f);
4385
+ if (line == 0)
4386
+ {
4387
+ PrintSpaces(f, (kFieldSize_CrcSpeed + kFieldSize_Usage + 2) * (numColumns - 1));
4388
+ PrintNumber(f, numThreadsVector[ti], 1 + kFieldSize_Usage + kFieldSize_CrcSpeed);
4389
+ }
4390
+ else
4391
+ {
4392
+ for (unsigned c = 0; c < numColumns; c++)
4393
+ {
4394
+ PrintRight(f, line == 1 ? "Usage" : "%", kFieldSize_Usage + 1);
4395
+ PrintRight(f, line == 1 ? "BW" : "MB/s", kFieldSize_CrcSpeed + 1);
4396
+ }
4397
+ }
4398
+ }
4399
+ }
4400
+ f.NewLine();
4401
+
4402
+ UInt64 numSteps = 0;
4403
+
4404
+ // for (UInt32 iter = 0; iter < numIterations; iter++)
4405
+ // {
4406
+ unsigned pow = 10; // kNumHashDictBits
4407
+ if (startDicLog_Defined)
4408
+ pow = startDicLog;
4409
+
4410
+ // #define NUM_SUB_BITS 2
4411
+ // pow <<= NUM_SUB_BITS;
4412
+ for (;; pow++)
4413
+ {
4414
+ const UInt64 bufSize = (UInt64)1 << pow;
4415
+ // UInt64 bufSize = (UInt64)1 << (pow >> NUM_SUB_BITS);
4416
+ // bufSize += ((UInt64)pow & ((1 << NUM_SUB_BITS) - 1)) << ((pow >> NUM_SUB_BITS) - NUM_SUB_BITS);
4417
+
4418
+ size_t dataSize = fileDataBuffer.Size();
4419
+ if (dataSize > bufSize || !use_fileData)
4420
+ dataSize = (size_t)bufSize;
4421
+
4422
+ for (UInt32 iter = 0; iter < numIterations; iter++)
4423
+ {
4424
+ Print_Pow(f, pow);
4425
+ // PrintNumber(f, bufSize >> 10, 4);
4426
+
4427
+ FOR_VECTOR (ti, numThreadsVector)
4428
+ {
4429
+ RINOK(f.CheckBreak())
4430
+ const UInt32 numThreads = numThreadsVector[ti];
4431
+ if (isHashMethod)
4432
+ {
4433
+ UInt64 speed = 0;
4434
+ UInt64 usage = 0;
4435
+ const HRESULT res = CrcBench(EXTERNAL_CODECS_LOC_VARS complexInCommands,
4436
+ numThreads,
4437
+ dataSize, (const Byte *)fileDataBuffer,
4438
+ speed, usage,
4439
+ (UInt32)complexity,
4440
+ 1, // benchWeight,
4441
+ (pow == kNumHashDictBits && !use_fileData) ? checkSum : NULL,
4442
+ method,
4443
+ &f,
4444
+ #ifndef Z7_ST
4445
+ &affinityMode,
4446
+ #endif
4447
+ false, // showRating
4448
+ NULL, false, 0);
4449
+ RINOK(res)
4450
+
4451
+ if (ti != 0)
4452
+ Print_Delimiter(f);
4453
+
4454
+ Bench_BW_Print_Usage_Speed(f, usage, speed);
4455
+ speedTotals.Values[ti] += speed;
4456
+ usageTotals.Values[ti] += usage;
4457
+ }
4458
+ else
4459
+ {
4460
+ {
4461
+ unsigned keySize = 32;
4462
+ if (IsString1PrefixedByString2(methodName, "AES128")) keySize = 16;
4463
+ else if (IsString1PrefixedByString2(methodName, "AES192")) keySize = 24;
4464
+ callback.BenchProps.KeySize = keySize;
4465
+ }
4466
+
4467
+ COneMethodInfo method2 = method;
4468
+ unsigned bench_DictBits;
4469
+
4470
+ if (benchIndex >= 0)
4471
+ {
4472
+ const CBenchMethod &bench = g_Bench[benchIndex];
4473
+ callback.BenchProps.EncComplex = bench.EncComplex;
4474
+ callback.BenchProps.DecComplexUnc = bench.DecComplexUnc;
4475
+ callback.BenchProps.DecComplexCompr = bench.DecComplexCompr;
4476
+ bench_DictBits = bench.DictBits;
4477
+ // bench_DictBits = kOldLzmaDictBits; = 32 default : for debug
4478
+ }
4479
+ else
4480
+ {
4481
+ bench_DictBits = kOldLzmaDictBits; // = 32 default
4482
+ if (isFilter)
4483
+ {
4484
+ const unsigned k_UnknownCoderComplexity = 4;
4485
+ callback.BenchProps.EncComplex = k_UnknownCoderComplexity;
4486
+ callback.BenchProps.DecComplexUnc = k_UnknownCoderComplexity;
4487
+ }
4488
+ else
4489
+ {
4490
+ callback.BenchProps.EncComplex = 1 << 10;
4491
+ callback.BenchProps.DecComplexUnc = 1 << 6;
4492
+ }
4493
+ callback.BenchProps.DecComplexCompr = 0;
4494
+ }
4495
+ callback.NeedPrint = false;
4496
+
4497
+ if (StringsAreEqualNoCase_Ascii(method2.MethodName, "LZMA"))
4498
+ {
4499
+ const NCOM::CPropVariant propVariant = (UInt32)pow;
4500
+ RINOK(method2.ParseMethodFromPROPVARIANT((UString)"d", propVariant))
4501
+ }
4502
+
4503
+ const HRESULT res = MethodBench(
4504
+ EXTERNAL_CODECS_LOC_VARS
4505
+ complexInCommands,
4506
+ #ifndef Z7_ST
4507
+ false, // oldLzmaBenchMode
4508
+ numThreadsVector[ti],
4509
+ &affinityMode,
4510
+ #endif
4511
+ method2,
4512
+ dataSize, (const Byte *)fileDataBuffer,
4513
+ bench_DictBits,
4514
+ printCallback,
4515
+ &callback,
4516
+ &callback.BenchProps);
4517
+ RINOK(res)
4518
+
4519
+ if (ti != 0)
4520
+ Print_Delimiter(f);
4521
+
4522
+ for (unsigned i = 0; i < 2; i++)
4523
+ {
4524
+ const CBenchInfo &bi = callback.BenchInfo_Results[i];
4525
+ const UInt64 usage = bi.GetUsage();
4526
+ const UInt64 speed = bi.GetUnpackSizeSpeed();
4527
+ usageTotals.Values[ti * 2 + i] += usage;
4528
+ speedTotals.Values[ti * 2 + i] += speed;
4529
+ Bench_BW_Print_Usage_Speed(f, usage, speed);
4530
+ }
4531
+ }
4532
+ }
4533
+
4534
+ f.NewLine();
4535
+ numSteps++;
4536
+ }
4537
+ if (dataSize >= dict64)
4538
+ break;
4539
+ }
4540
+
4541
+ if (numSteps != 0)
4542
+ {
4543
+ f.Print("Avg:");
4544
+ for (unsigned ti = 0; ti < numThreadsVector.Size(); ti++)
4545
+ {
4546
+ if (ti != 0)
4547
+ Print_Delimiter(f);
4548
+ for (unsigned i = 0; i < numColumns; i++)
4549
+ Bench_BW_Print_Usage_Speed(f,
4550
+ usageTotals.Values[ti * numColumns + i] / numSteps,
4551
+ speedTotals.Values[ti * numColumns + i] / numSteps);
4552
+ }
4553
+ f.NewLine();
4554
+ }
4555
+
4556
+ return S_OK;
4557
+ }
4558
+
4559
+ bool use2Columns = false;
4560
+
4561
+ bool totalBenchMode = false;
4562
+ bool onlyHashBench = false;
4563
+ if (methodName.IsEqualTo_Ascii_NoCase("hash"))
4564
+ {
4565
+ onlyHashBench = true;
4566
+ methodName = "*";
4567
+ totalBenchMode = true;
4568
+ }
4569
+ else if (methodName.Find('*') >= 0)
4570
+ totalBenchMode = true;
4571
+
4572
+ // ---------- Threads loop ----------
4573
+ for (unsigned threadsPassIndex = 0; threadsPassIndex < 3; threadsPassIndex++)
4574
+ {
4575
+
4576
+ UInt32 numThreads = numThreadsSpecified;
4577
+
4578
+ if (!multiThreadTests)
4579
+ {
4580
+ if (threadsPassIndex != 0)
4581
+ break;
4582
+ }
4583
+ else
4584
+ {
4585
+ numThreads = 1;
4586
+ if (threadsPassIndex != 0)
4587
+ {
4588
+ if (numCPUs < 2)
4589
+ break;
4590
+ numThreads = numCPUs;
4591
+ if (threadsPassIndex == 1)
4592
+ {
4593
+ if (numCPUs >= 4)
4594
+ numThreads = numCPUs / 2;
4595
+ }
4596
+ else if (numCPUs < 4)
4597
+ break;
4598
+ }
4599
+ }
4600
+
4601
+ IBenchPrintCallback &f = *printCallback;
4602
+
4603
+ if (threadsPassIndex > 0)
4604
+ {
4605
+ f.NewLine();
4606
+ f.NewLine();
4607
+ }
4608
+
4609
+ if (!dictIsDefined && !onlyHashBench)
4610
+ {
4611
+ // we use dicSizeLog and dicSizeLog_Main for data size.
4612
+ // also we use it to reduce dictionary size of LZMA encoder via NCoderPropID::kReduceSize.
4613
+ const unsigned dicSizeLog_Main = (totalBenchMode ? 24 : 25);
4614
+ unsigned dicSizeLog = dicSizeLog_Main;
4615
+
4616
+ #ifdef UNDER_CE
4617
+ dicSizeLog = (UInt64)1 << 20;
4618
+ #endif
4619
+
4620
+ if (ramSize_Defined)
4621
+ for (; dicSizeLog > kBenchMinDicLogSize; dicSizeLog--)
4622
+ if (GetBenchMemoryUsage(numThreads, (int)level, ((UInt64)1 << dicSizeLog), totalBenchMode) + (8 << 20) <= ramSize)
4623
+ break;
4624
+
4625
+ dict = (UInt64)1 << dicSizeLog;
4626
+
4627
+ if (totalBenchMode && dicSizeLog != dicSizeLog_Main)
4628
+ {
4629
+ f.Print("Dictionary reduced to: ");
4630
+ PrintNumber(f, dicSizeLog, 1);
4631
+ f.NewLine();
4632
+ }
4633
+ }
4634
+
4635
+ Print_Usage_and_Threads(f,
4636
+ onlyHashBench ?
4637
+ GetBenchMemoryUsage_Hash(numThreads, dict) :
4638
+ GetBenchMemoryUsage(numThreads, (int)level, dict, totalBenchMode),
4639
+ numThreads);
4640
+
4641
+ f.NewLine();
4642
+
4643
+ f.NewLine();
4644
+
4645
+ if (totalBenchMode)
4646
+ {
4647
+ callback.NameFieldSize = kFieldSize_Name;
4648
+ use2Columns = false;
4649
+ }
4650
+ else
4651
+ {
4652
+ callback.NameFieldSize = kFieldSize_SmallName;
4653
+ use2Columns = true;
4654
+ }
4655
+ callback.Use2Columns = use2Columns;
4656
+
4657
+ bool showFreq = false;
4658
+ UInt64 cpuFreq = 0;
4659
+
4660
+ if (totalBenchMode)
4661
+ {
4662
+ showFreq = true;
4663
+ }
4664
+
4665
+ unsigned fileldSize = kFieldSize_TotalSize;
4666
+ if (showFreq)
4667
+ fileldSize += kFieldSize_EUAndEffec;
4668
+
4669
+ if (use2Columns)
4670
+ {
4671
+ PrintSpaces(f, callback.NameFieldSize);
4672
+ PrintRight(f, "Compressing", fileldSize);
4673
+ f.Print(kSep);
4674
+ PrintRight(f, "Decompressing", fileldSize);
4675
+ }
4676
+ f.NewLine();
4677
+ PrintLeft(f, totalBenchMode ? "Method" : "Dict", callback.NameFieldSize);
4678
+
4679
+ int j;
4680
+
4681
+ for (j = 0; j < 2; j++)
4682
+ {
4683
+ PrintRight(f, "Speed", kFieldSize_Speed + 1);
4684
+ PrintRight(f, "Usage", kFieldSize_Usage + 1);
4685
+ PrintRight(f, "R/U", kFieldSize_RU + 1);
4686
+ PrintRight(f, "Rating", kFieldSize_Rating + 1);
4687
+ if (showFreq)
4688
+ {
4689
+ PrintRight(f, "E/U", kFieldSize_EU + 1);
4690
+ PrintRight(f, "Effec", kFieldSize_Effec + 1);
4691
+ }
4692
+ if (!use2Columns)
4693
+ break;
4694
+ if (j == 0)
4695
+ f.Print(kSep);
4696
+ }
4697
+
4698
+ f.NewLine();
4699
+ PrintSpaces(f, callback.NameFieldSize);
4700
+
4701
+ for (j = 0; j < 2; j++)
4702
+ {
4703
+ PrintRight(f, "KiB/s", kFieldSize_Speed + 1);
4704
+ PrintRight(f, "%", kFieldSize_Usage + 1);
4705
+ PrintRight(f, "MIPS", kFieldSize_RU + 1);
4706
+ PrintRight(f, "MIPS", kFieldSize_Rating + 1);
4707
+ if (showFreq)
4708
+ {
4709
+ PrintRight(f, "%", kFieldSize_EU + 1);
4710
+ PrintRight(f, "%", kFieldSize_Effec + 1);
4711
+ }
4712
+ if (!use2Columns)
4713
+ break;
4714
+ if (j == 0)
4715
+ f.Print(kSep);
4716
+ }
4717
+
4718
+ f.NewLine();
4719
+ f.NewLine();
4720
+
4721
+ if (specifiedFreq != 0)
4722
+ cpuFreq = specifiedFreq;
4723
+
4724
+ // bool showTotalSpeed = false;
4725
+
4726
+ if (totalBenchMode)
4727
+ {
4728
+ for (UInt32 i = 0; i < numIterations; i++)
4729
+ {
4730
+ if (i != 0)
4731
+ printCallback->NewLine();
4732
+
4733
+ const unsigned kNumCpuTests = 3;
4734
+ for (unsigned freqTest = 0; freqTest < kNumCpuTests; freqTest++)
4735
+ {
4736
+ PrintLeft(f, "CPU", kFieldSize_Name);
4737
+
4738
+ // UInt32 resVal;
4739
+
4740
+ CFreqBench fb;
4741
+ fb.complexInCommands = complexInCommands;
4742
+ fb.numThreads = numThreads;
4743
+ // showFreq;
4744
+ fb.showFreq = (freqTest == kNumCpuTests - 1 || specifiedFreq != 0);
4745
+ fb.specifiedFreq = specifiedFreq;
4746
+
4747
+ const HRESULT res = fb.FreqBench(printCallback
4748
+ #ifndef Z7_ST
4749
+ , &affinityMode
4750
+ #endif
4751
+ );
4752
+ RINOK(res)
4753
+
4754
+ cpuFreq = fb.CpuFreqRes;
4755
+ callback.NewLine();
4756
+
4757
+ if (specifiedFreq != 0)
4758
+ cpuFreq = specifiedFreq;
4759
+
4760
+ if (testTimeMs >= 1000)
4761
+ if (freqTest == kNumCpuTests - 1)
4762
+ {
4763
+ // SetComplexCommandsMs(testTimeMs, specifiedFreq != 0, cpuFreq, complexInCommands);
4764
+ }
4765
+ }
4766
+ callback.NewLine();
4767
+
4768
+ // return S_OK; // change it
4769
+
4770
+ callback.SetFreq(true, cpuFreq);
4771
+
4772
+ if (!onlyHashBench)
4773
+ {
4774
+ size_t dataSize = (size_t)dict;
4775
+ if (use_fileData)
4776
+ {
4777
+ dataSize = fileDataBuffer.Size();
4778
+ if (dictIsDefined && dataSize > dict)
4779
+ dataSize = (size_t)dict;
4780
+ }
4781
+
4782
+ const HRESULT res = TotalBench(EXTERNAL_CODECS_LOC_VARS
4783
+ method, complexInCommands,
4784
+ #ifndef Z7_ST
4785
+ numThreads,
4786
+ &affinityMode,
4787
+ #endif
4788
+ dictIsDefined || use_fileData, // forceUnpackSize
4789
+ dataSize,
4790
+ (const Byte *)fileDataBuffer,
4791
+ printCallback, &callback);
4792
+ RINOK(res)
4793
+ }
4794
+
4795
+ {
4796
+ size_t dataSize = (size_t)1 << kNumHashDictBits;
4797
+ if (dictIsDefined)
4798
+ {
4799
+ dataSize = (size_t)dict;
4800
+ if (dataSize != dict)
4801
+ return E_OUTOFMEMORY;
4802
+ }
4803
+ if (use_fileData)
4804
+ {
4805
+ dataSize = fileDataBuffer.Size();
4806
+ if (dictIsDefined && dataSize > dict)
4807
+ dataSize = (size_t)dict;
4808
+ }
4809
+
4810
+ const HRESULT res = TotalBench_Hash(EXTERNAL_CODECS_LOC_VARS
4811
+ method, complexInCommands,
4812
+ numThreads,
4813
+ dataSize, (const Byte *)fileDataBuffer,
4814
+ printCallback, &callback,
4815
+ #ifndef Z7_ST
4816
+ &affinityMode,
4817
+ #endif
4818
+ &callback.EncodeRes, true, cpuFreq);
4819
+ RINOK(res)
4820
+ }
4821
+
4822
+ callback.NewLine();
4823
+ {
4824
+ PrintLeft(f, "CPU", kFieldSize_Name);
4825
+
4826
+ CFreqBench fb;
4827
+ fb.complexInCommands = complexInCommands;
4828
+ fb.numThreads = numThreads;
4829
+ // showFreq;
4830
+ fb.showFreq = (specifiedFreq != 0);
4831
+ fb.specifiedFreq = specifiedFreq;
4832
+
4833
+ const HRESULT res = fb.FreqBench(printCallback
4834
+ #ifndef Z7_ST
4835
+ , &affinityMode
4836
+ #endif
4837
+ );
4838
+ RINOK(res)
4839
+ callback.NewLine();
4840
+ }
4841
+ }
4842
+ }
4843
+ else
4844
+ {
4845
+ needSetComplexity = true;
4846
+ if (!methodName.IsEqualTo_Ascii_NoCase("LZMA"))
4847
+ {
4848
+ unsigned i;
4849
+ for (i = 0; i < Z7_ARRAY_SIZE(g_Bench); i++)
4850
+ {
4851
+ const CBenchMethod &h = g_Bench[i];
4852
+ AString benchMethod (h.Name);
4853
+ AString benchProps;
4854
+ const int propPos = benchMethod.Find(':');
4855
+ if (propPos >= 0)
4856
+ {
4857
+ benchProps = benchMethod.Ptr((unsigned)(propPos + 1));
4858
+ benchMethod.DeleteFrom((unsigned)propPos);
4859
+ }
4860
+
4861
+ if (AreSameMethodNames(benchMethod, methodName))
4862
+ {
4863
+ if (benchProps.IsEmpty()
4864
+ || (benchProps == "x5" && method.PropsString.IsEmpty())
4865
+ || method.PropsString.IsPrefixedBy_Ascii_NoCase(benchProps))
4866
+ {
4867
+ callback.BenchProps.EncComplex = h.EncComplex;
4868
+ callback.BenchProps.DecComplexCompr = h.DecComplexCompr;
4869
+ callback.BenchProps.DecComplexUnc = h.DecComplexUnc;
4870
+ needSetComplexity = false;
4871
+ break;
4872
+ }
4873
+ }
4874
+ }
4875
+ /*
4876
+ if (i == Z7_ARRAY_SIZE(g_Bench))
4877
+ return E_NOTIMPL;
4878
+ */
4879
+ }
4880
+ if (needSetComplexity)
4881
+ callback.BenchProps.SetLzmaCompexity();
4882
+
4883
+ if (startDicLog < kBenchMinDicLogSize)
4884
+ startDicLog = kBenchMinDicLogSize;
4885
+
4886
+ for (unsigned i = 0; i < numIterations; i++)
4887
+ {
4888
+ unsigned pow = (dict < GetDictSizeFromLog(startDicLog)) ? kBenchMinDicLogSize : (unsigned)startDicLog;
4889
+ if (!multiDict)
4890
+ pow = 32;
4891
+ while (GetDictSizeFromLog(pow) > dict && pow > 0)
4892
+ pow--;
4893
+ for (; GetDictSizeFromLog(pow) <= dict; pow++)
4894
+ {
4895
+ Print_Pow(f, pow);
4896
+ callback.DictSize = (UInt64)1 << pow;
4897
+
4898
+ COneMethodInfo method2 = method;
4899
+
4900
+ if (StringsAreEqualNoCase_Ascii(method2.MethodName, "LZMA"))
4901
+ {
4902
+ // We add dictionary size property.
4903
+ // method2 can have two different dictionary size properties.
4904
+ // And last property is main.
4905
+ NCOM::CPropVariant propVariant = (UInt32)pow;
4906
+ RINOK(method2.ParseMethodFromPROPVARIANT((UString)"d", propVariant))
4907
+ }
4908
+
4909
+ size_t uncompressedDataSize;
4910
+ if (use_fileData)
4911
+ {
4912
+ uncompressedDataSize = fileDataBuffer.Size();
4913
+ }
4914
+ else
4915
+ {
4916
+ uncompressedDataSize = (size_t)callback.DictSize;
4917
+ if (uncompressedDataSize != callback.DictSize)
4918
+ return E_OUTOFMEMORY;
4919
+ if (uncompressedDataSize >= (1 << 18))
4920
+ uncompressedDataSize += kAdditionalSize;
4921
+ }
4922
+
4923
+ const HRESULT res = MethodBench(
4924
+ EXTERNAL_CODECS_LOC_VARS
4925
+ complexInCommands,
4926
+ #ifndef Z7_ST
4927
+ true, numThreads,
4928
+ &affinityMode,
4929
+ #endif
4930
+ method2,
4931
+ uncompressedDataSize, (const Byte *)fileDataBuffer,
4932
+ kOldLzmaDictBits, printCallback, &callback, &callback.BenchProps);
4933
+ f.NewLine();
4934
+ RINOK(res)
4935
+ if (!multiDict)
4936
+ break;
4937
+ }
4938
+ }
4939
+ }
4940
+
4941
+ PrintChars(f, '-', callback.NameFieldSize + fileldSize);
4942
+
4943
+ if (use2Columns)
4944
+ {
4945
+ f.Print(kSep);
4946
+ PrintChars(f, '-', fileldSize);
4947
+ }
4948
+
4949
+ f.NewLine();
4950
+
4951
+ if (use2Columns)
4952
+ {
4953
+ PrintLeft(f, "Avr:", callback.NameFieldSize);
4954
+ PrintTotals(f, showFreq, cpuFreq, !totalBenchMode, callback.EncodeRes);
4955
+ f.Print(kSep);
4956
+ PrintTotals(f, showFreq, cpuFreq, !totalBenchMode, callback.DecodeRes);
4957
+ f.NewLine();
4958
+ }
4959
+
4960
+ PrintLeft(f, "Tot:", callback.NameFieldSize);
4961
+ CTotalBenchRes midRes;
4962
+ midRes = callback.EncodeRes;
4963
+ midRes.Update_With_Res(callback.DecodeRes);
4964
+
4965
+ // midRes.SetSum(callback.EncodeRes, callback.DecodeRes);
4966
+ PrintTotals(f, showFreq, cpuFreq, false, midRes);
4967
+ f.NewLine();
4968
+
4969
+ }
4970
+ return S_OK;
4971
+ }