react-native-update 10.34.3 → 10.34.4

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 (800) hide show
  1. package/harmony/pushy/src/main/cpp/HDiffPatch/CHANGELOG.md +34 -172
  2. package/harmony/pushy/src/main/cpp/HDiffPatch/LICENSE +4 -4
  3. package/harmony/pushy/src/main/cpp/HDiffPatch/Makefile +63 -379
  4. package/harmony/pushy/src/main/cpp/HDiffPatch/README.md +170 -415
  5. package/harmony/pushy/src/main/cpp/HDiffPatch/_atosize.h +10 -54
  6. package/harmony/pushy/src/main/cpp/HDiffPatch/_clock_for_demo.h +1 -13
  7. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Android.mk +18 -171
  8. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/Application.mk +4 -5
  9. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.c +7 -38
  10. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch.h +4 -15
  11. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/hpatch_jni.c +12 -22
  12. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/java/com/github/sisong/HPatch.java +4 -22
  13. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffPatch.workspace +8 -0
  14. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HDiffZ.cbp +219 -0
  15. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/HPatchZ.cbp +156 -0
  16. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/codeblocks/unitTest.cbp +65 -0
  17. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffPatch.sln +105 -155
  18. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj +236 -363
  19. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HDiffZ.vcxproj.user +3 -0
  20. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj +317 -347
  21. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/HPatchZ.vcxproj.user +3 -0
  22. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj +181 -295
  23. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/unitTest.vcxproj.user +3 -0
  24. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/contents.xcworkspacedata +0 -9
  25. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/bestParams.xcodeproj/project.pbxproj +14 -53
  26. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/hdiffz.xcodeproj/project.pbxproj +32 -162
  27. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/hpatchz.xcodeproj/project.pbxproj +22 -89
  28. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/lzma.xcodeproj/project.pbxproj +13 -237
  29. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/testHashClash.xcodeproj/project.pbxproj +2 -2
  30. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/unitTest.xcodeproj/project.pbxproj +14 -194
  31. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/zstd.xcodeproj/project.pbxproj +10 -30
  32. package/harmony/pushy/src/main/cpp/HDiffPatch/checksum_plugin_demo.h +3 -458
  33. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_parallel.cpp +71 -106
  34. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_parallel.h +3 -3
  35. package/harmony/pushy/src/main/cpp/HDiffPatch/compress_plugin_demo.h +110 -484
  36. package/harmony/pushy/src/main/cpp/HDiffPatch/decompress_plugin_demo.h +193 -835
  37. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.cpp +50 -99
  38. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff.h +4 -18
  39. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.cpp +8 -147
  40. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_diff_tools.h +6 -18
  41. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/dir_manifest.cpp +25 -7
  42. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_diff/file_for_dirDiff.h +113 -5
  43. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.c +97 -163
  44. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch.h +39 -49
  45. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.c +15 -15
  46. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_tools.h +2 -18
  47. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/dir_patch_types.h +4 -8
  48. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.c +57 -72
  49. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_dir_output.h +13 -18
  50. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.c +1 -1
  51. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/new_stream.h +2 -2
  52. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.c +2 -2
  53. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/ref_stream.h +2 -2
  54. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.c +2 -2
  55. package/harmony/pushy/src/main/cpp/HDiffPatch/dirDiffPatch/dir_patch/res_handle_limit.h +1 -1
  56. package/harmony/pushy/src/main/cpp/HDiffPatch/file_for_patch.c +100 -311
  57. package/harmony/pushy/src/main/cpp/HDiffPatch/file_for_patch.h +72 -53
  58. package/harmony/pushy/src/main/cpp/HDiffPatch/hdiffz.cpp +487 -888
  59. package/harmony/pushy/src/main/cpp/HDiffPatch/hpatch_dir_listener.h +28 -45
  60. package/harmony/pushy/src/main/cpp/HDiffPatch/hpatchz.c +247 -812
  61. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.cpp +544 -1265
  62. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff.h +38 -123
  63. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff_types.h +0 -115
  64. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.cpp +102 -272
  65. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/bytes_rle.h +12 -22
  66. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.cpp +4 -18
  67. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/compress_detect.h +5 -7
  68. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/{divsufsort.cpp → divsufsort.c} +8 -5
  69. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.c.inc.h +164 -91
  70. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort.h +102 -5
  71. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.c +13 -0
  72. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.h +97 -1
  73. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort_private.h +44 -23
  74. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/sssort.c.inc.h +89 -54
  75. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/trsort.c.inc.h +55 -48
  76. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/utils.c.inc.h +381 -0
  77. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.c +47 -110
  78. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/adler_roll.h +4 -11
  79. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/bloom_filter.h +26 -53
  80. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/covers.h +25 -103
  81. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp +130 -271
  82. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/digest_matcher.h +7 -17
  83. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp +37 -628
  84. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/limit_mem_diff/stream_serialize.h +43 -203
  85. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/mem_buf.h +10 -14
  86. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/pack_uint.h +7 -22
  87. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.cpp +46 -132
  88. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/suffix_string.h +9 -48
  89. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.c +299 -650
  90. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch.h +82 -120
  91. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_private.h +7 -87
  92. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/patch_types.h +9 -119
  93. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_channel.cpp +6 -2
  94. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_channel.h +15 -192
  95. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import.cpp +367 -0
  96. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import.h +56 -31
  97. package/harmony/pushy/src/main/cpp/HDiffPatch/test/_private_searchBestParams.cpp +1 -1
  98. package/harmony/pushy/src/main/cpp/HDiffPatch/test/hpatchz_test.cpp +1 -0
  99. package/harmony/pushy/src/main/cpp/HDiffPatch/test/testHashClash.cpp +31 -225
  100. package/harmony/pushy/src/main/cpp/HDiffPatch/test/unit_test.cpp +94 -566
  101. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/7zAsm.asm +28 -222
  102. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/7zCrcOpt.asm +117 -228
  103. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/AesOpt.asm +173 -678
  104. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/LzmaDecOpt.asm +22 -103
  105. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/XzCrc64Opt.asm +167 -485
  106. package/harmony/pushy/src/main/cpp/lzma/C/7z.h +6 -8
  107. package/harmony/pushy/src/main/cpp/lzma/C/7zAlloc.c +30 -39
  108. package/harmony/pushy/src/main/cpp/lzma/C/7zAlloc.h +3 -3
  109. package/harmony/pushy/src/main/cpp/lzma/C/7zArcIn.c +217 -232
  110. package/harmony/pushy/src/main/cpp/lzma/C/7zBuf.h +3 -3
  111. package/harmony/pushy/src/main/cpp/lzma/C/7zCrc.c +68 -404
  112. package/harmony/pushy/src/main/cpp/lzma/C/7zCrc.h +6 -9
  113. package/harmony/pushy/src/main/cpp/lzma/C/7zCrcOpt.c +79 -163
  114. package/harmony/pushy/src/main/cpp/lzma/C/7zDec.c +78 -160
  115. package/harmony/pushy/src/main/cpp/lzma/C/7zFile.c +58 -215
  116. package/harmony/pushy/src/main/cpp/lzma/C/7zFile.h +6 -15
  117. package/harmony/pushy/src/main/cpp/lzma/C/7zStream.c +23 -46
  118. package/harmony/pushy/src/main/cpp/lzma/C/7zTypes.h +89 -311
  119. package/harmony/pushy/src/main/cpp/lzma/C/7zVersion.h +5 -5
  120. package/harmony/pushy/src/main/cpp/lzma/C/Aes.c +68 -191
  121. package/harmony/pushy/src/main/cpp/lzma/C/Aes.h +8 -30
  122. package/harmony/pushy/src/main/cpp/lzma/C/AesOpt.c +108 -926
  123. package/harmony/pushy/src/main/cpp/lzma/C/Alloc.c +96 -246
  124. package/harmony/pushy/src/main/cpp/lzma/C/Alloc.h +8 -33
  125. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2.c +144 -177
  126. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2.h +42 -228
  127. package/harmony/pushy/src/main/cpp/lzma/C/Bcj2Enc.c +182 -377
  128. package/harmony/pushy/src/main/cpp/lzma/C/Bra.c +143 -622
  129. package/harmony/pushy/src/main/cpp/lzma/C/Bra.h +40 -81
  130. package/harmony/pushy/src/main/cpp/lzma/C/Bra86.c +58 -163
  131. package/harmony/pushy/src/main/cpp/lzma/C/BraIA64.c +48 -9
  132. package/harmony/pushy/src/main/cpp/lzma/C/Compiler.h +15 -228
  133. package/harmony/pushy/src/main/cpp/lzma/C/CpuArch.c +133 -885
  134. package/harmony/pushy/src/main/cpp/lzma/C/CpuArch.h +78 -428
  135. package/harmony/pushy/src/main/cpp/lzma/C/Delta.c +31 -136
  136. package/harmony/pushy/src/main/cpp/lzma/C/Delta.h +3 -3
  137. package/harmony/pushy/src/main/cpp/lzma/C/DllSecur.c +62 -53
  138. package/harmony/pushy/src/main/cpp/lzma/C/DllSecur.h +5 -5
  139. package/harmony/pushy/src/main/cpp/lzma/C/LzFind.c +495 -1114
  140. package/harmony/pushy/src/main/cpp/lzma/C/LzFind.h +25 -64
  141. package/harmony/pushy/src/main/cpp/lzma/C/LzFindMt.c +400 -969
  142. package/harmony/pushy/src/main/cpp/lzma/C/LzFindMt.h +24 -37
  143. package/harmony/pushy/src/main/cpp/lzma/C/LzHash.h +48 -25
  144. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Dec.c +7 -12
  145. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Dec.h +7 -8
  146. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2DecMt.c +83 -96
  147. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2DecMt.h +9 -11
  148. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Enc.c +92 -96
  149. package/harmony/pushy/src/main/cpp/lzma/C/Lzma2Enc.h +9 -12
  150. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86.h +3 -3
  151. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86Dec.c +4 -3
  152. package/harmony/pushy/src/main/cpp/lzma/C/Lzma86Enc.c +6 -3
  153. package/harmony/pushy/src/main/cpp/lzma/C/LzmaDec.c +206 -384
  154. package/harmony/pushy/src/main/cpp/lzma/C/LzmaDec.h +8 -11
  155. package/harmony/pushy/src/main/cpp/lzma/C/LzmaEnc.c +315 -489
  156. package/harmony/pushy/src/main/cpp/lzma/C/LzmaEnc.h +9 -18
  157. package/harmony/pushy/src/main/cpp/lzma/C/LzmaLib.c +3 -5
  158. package/harmony/pushy/src/main/cpp/lzma/C/LzmaLib.h +14 -21
  159. package/harmony/pushy/src/main/cpp/lzma/C/MtCoder.c +87 -90
  160. package/harmony/pushy/src/main/cpp/lzma/C/MtCoder.h +25 -28
  161. package/harmony/pushy/src/main/cpp/lzma/C/MtDec.c +88 -74
  162. package/harmony/pushy/src/main/cpp/lzma/C/MtDec.h +20 -21
  163. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd.h +34 -118
  164. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7.c +293 -712
  165. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7.h +70 -109
  166. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7Dec.c +116 -237
  167. package/harmony/pushy/src/main/cpp/lzma/C/Ppmd7Enc.c +95 -245
  168. package/harmony/pushy/src/main/cpp/lzma/C/Precomp.h +5 -122
  169. package/harmony/pushy/src/main/cpp/lzma/C/RotateDefs.h +4 -24
  170. package/harmony/pushy/src/main/cpp/lzma/C/Sha256.c +143 -387
  171. package/harmony/pushy/src/main/cpp/lzma/C/Sha256.h +7 -67
  172. package/harmony/pushy/src/main/cpp/lzma/C/Sort.c +114 -241
  173. package/harmony/pushy/src/main/cpp/lzma/C/Sort.h +7 -4
  174. package/harmony/pushy/src/main/cpp/lzma/C/Threads.c +14 -731
  175. package/harmony/pushy/src/main/cpp/lzma/C/Threads.h +14 -204
  176. package/harmony/pushy/src/main/cpp/lzma/C/ThreadsP.c +396 -0
  177. package/harmony/pushy/src/main/cpp/lzma/C/ThreadsP.h +31 -0
  178. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7z.dsp +2 -10
  179. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/7zMain.c +79 -282
  180. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/Precomp.h +7 -10
  181. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/makefile +3 -7
  182. package/harmony/pushy/src/main/cpp/lzma/C/Util/7z/makefile.gcc +75 -32
  183. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.c +56 -111
  184. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/LzmaUtil.dsp +0 -24
  185. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/makefile +0 -2
  186. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/makefile.gcc +41 -18
  187. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLib.dsp +2 -30
  188. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/LzmaLibExports.c +6 -7
  189. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/makefile +2 -27
  190. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/Precomp.h +7 -10
  191. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/SfxSetup.c +22 -39
  192. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/makefile +2 -9
  193. package/harmony/pushy/src/main/cpp/lzma/C/Util/SfxSetup/makefile_con +1 -3
  194. package/harmony/pushy/src/main/cpp/lzma/C/Xz.c +3 -5
  195. package/harmony/pushy/src/main/cpp/lzma/C/Xz.h +47 -129
  196. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64.c +43 -97
  197. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64.h +8 -8
  198. package/harmony/pushy/src/main/cpp/lzma/C/XzCrc64Opt.c +36 -228
  199. package/harmony/pushy/src/main/cpp/lzma/C/XzDec.c +295 -405
  200. package/harmony/pushy/src/main/cpp/lzma/C/XzEnc.c +139 -194
  201. package/harmony/pushy/src/main/cpp/lzma/C/XzEnc.h +11 -15
  202. package/harmony/pushy/src/main/cpp/lzma/C/XzIn.c +134 -200
  203. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/7zip.mak +6 -6
  204. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Aes.mak +1 -4
  205. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zCompressionMode.h +13 -29
  206. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.cpp +90 -120
  207. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zDecode.h +6 -9
  208. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.cpp +140 -183
  209. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zEncode.h +20 -23
  210. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zExtract.cpp +57 -78
  211. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.cpp +44 -169
  212. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zFolderInStream.h +17 -57
  213. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.cpp +109 -141
  214. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandler.h +57 -54
  215. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHandlerOut.cpp +116 -336
  216. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.cpp +1 -1
  217. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zHeader.h +9 -17
  218. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.cpp +136 -234
  219. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zIn.h +26 -35
  220. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zItem.h +5 -10
  221. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.cpp +155 -280
  222. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zOut.h +40 -51
  223. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.cpp +59 -67
  224. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zProperties.h +2 -6
  225. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zRegister.cpp +2 -8
  226. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.cpp +3 -12
  227. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zSpecStream.h +9 -23
  228. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.cpp +387 -975
  229. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/7zUpdate.h +16 -44
  230. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/7z/StdAfx.h +2 -5
  231. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Archive.def +0 -2
  232. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Archive2.def +0 -2
  233. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/ArchiveExports.cpp +8 -15
  234. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.cpp +87 -106
  235. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/CoderMixer2.h +57 -57
  236. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.cpp +1 -1
  237. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/DummyOutStream.h +8 -6
  238. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.cpp +43 -126
  239. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/HandlerOut.h +18 -77
  240. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +9 -20
  241. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.h +23 -20
  242. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.cpp +9 -61
  243. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ItemNameUtils.h +3 -8
  244. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.cpp +27 -29
  245. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/MultiStream.h +26 -23
  246. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.cpp +2 -2
  247. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/OutStreamWithCRC.h +8 -6
  248. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/ParseProperties.h +2 -2
  249. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/Common/StdAfx.h +2 -5
  250. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/DllExports2.cpp +10 -63
  251. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/IArchive.h +173 -319
  252. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/LzmaHandler.cpp +113 -92
  253. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/SplitHandler.cpp +53 -47
  254. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/StdAfx.h +2 -5
  255. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.cpp +208 -352
  256. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Archive/XzHandler.h +2 -2
  257. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Asm.mak +3 -6
  258. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/Alone.dsp +47 -227
  259. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/StdAfx.h +2 -5
  260. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/makefile +5 -19
  261. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/StdAfx.h +2 -5
  262. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zExtractR/makefile +2 -4
  263. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/StdAfx.h +2 -5
  264. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Format7zR/makefile +1 -6
  265. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaAlone.cpp +53 -71
  266. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/LzmaCon.dsp +22 -85
  267. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/StdAfx.h +2 -5
  268. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile +4 -13
  269. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/LzmaCon/makefile.gcc +166 -102
  270. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SFXCon.dsp +4 -109
  271. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/SfxCon.cpp +30 -69
  272. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/StdAfx.h +2 -5
  273. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/makefile +7 -10
  274. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/resource.rc +1 -5
  275. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.cpp +16 -16
  276. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractCallbackSfx.h +12 -9
  277. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.cpp +9 -7
  278. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/ExtractEngine.h +2 -2
  279. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SFXSetup.dsp +5 -74
  280. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/SfxSetup.cpp +51 -58
  281. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/StdAfx.h +10 -3
  282. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXSetup/makefile +5 -9
  283. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SFXWin.dsp +6 -92
  284. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/SfxWin.cpp +19 -46
  285. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/StdAfx.h +11 -3
  286. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/makefile +5 -11
  287. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXWin/resource.rc +0 -5
  288. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.cpp +28 -136
  289. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CWrappers.h +5 -67
  290. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.cpp +62 -74
  291. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/CreateCoder.h +24 -32
  292. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.cpp +7 -7
  293. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilePathAutoRename.h +2 -2
  294. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.cpp +100 -548
  295. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FileStreams.h +86 -125
  296. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.cpp +116 -258
  297. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/FilterCoder.h +76 -72
  298. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.cpp +15 -34
  299. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InBuffer.h +9 -38
  300. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.cpp +82 -192
  301. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/InOutTempBuffer.h +28 -25
  302. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.cpp +52 -78
  303. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LimitedStreams.h +83 -52
  304. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/LockedStream.h +2 -2
  305. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodId.h +2 -2
  306. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.cpp +67 -323
  307. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MethodProps.h +38 -123
  308. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.cpp +8 -6
  309. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OffsetStream.h +13 -9
  310. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.cpp +12 -12
  311. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/OutBuffer.h +7 -74
  312. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.cpp +5 -5
  313. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/ProgressUtils.h +13 -11
  314. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/PropId.cpp +1 -10
  315. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/RegisterArc.h +14 -16
  316. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/RegisterCodec.h +16 -16
  317. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StdAfx.h +2 -5
  318. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.cpp +50 -45
  319. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamBinder.h +21 -39
  320. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.cpp +42 -47
  321. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamObjects.h +53 -42
  322. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.cpp +4 -49
  323. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/StreamUtils.h +2 -20
  324. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.cpp +4 -4
  325. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/UniqBlocks.h +5 -20
  326. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.cpp +9 -8
  327. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/VirtThread.h +5 -5
  328. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.cpp +355 -556
  329. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Coder.h +59 -66
  330. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Bcj2Register.cpp +2 -2
  331. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.cpp +6 -6
  332. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjCoder.h +13 -19
  333. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BcjRegister.cpp +2 -2
  334. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.cpp +5 -88
  335. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchMisc.h +18 -42
  336. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/BranchRegister.cpp +16 -33
  337. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/ByteSwap.cpp +53 -52
  338. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CodecExports.cpp +30 -64
  339. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.cpp +22 -55
  340. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/CopyCoder.h +26 -11
  341. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/DeltaFilter.cpp +28 -26
  342. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.cpp +28 -30
  343. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Decoder.h +54 -45
  344. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.cpp +12 -24
  345. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Encoder.h +22 -10
  346. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/Lzma2Register.cpp +1 -1
  347. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.cpp +26 -33
  348. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaDecoder.h +51 -51
  349. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.cpp +40 -232
  350. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaEncoder.h +14 -13
  351. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/LzmaRegister.cpp +1 -1
  352. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.cpp +35 -84
  353. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdDecoder.h +41 -42
  354. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.cpp +25 -66
  355. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdEncoder.h +17 -8
  356. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/PpmdRegister.cpp +1 -1
  357. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/StdAfx.h +2 -5
  358. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.cpp +12 -13
  359. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzDecoder.h +32 -26
  360. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.cpp +16 -14
  361. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Compress/XzEncoder.h +20 -9
  362. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crc.mak +1 -1
  363. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crc64.mak +1 -1
  364. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.cpp +32 -67
  365. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAes.h +18 -30
  366. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/7zAesRegister.cpp +3 -3
  367. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.cpp +43 -208
  368. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAes.h +25 -90
  369. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/MyAesReg.cpp +4 -17
  370. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.cpp +21 -29
  371. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/RandGen.h +3 -4
  372. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Crypto/StdAfx.h +2 -5
  373. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/GuiCommon.rc +3 -38
  374. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Guid.txt +3 -26
  375. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/ICoder.h +172 -253
  376. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IDecl.h +7 -55
  377. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IPassword.h +12 -43
  378. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IProgress.h +9 -10
  379. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/IStream.h +50 -133
  380. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/LzmaDec.mak +2 -4
  381. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/MyVersionInfo.rc +1 -1
  382. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/PropID.h +2 -53
  383. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.cpp +177 -329
  384. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/Client7z.dsp +1 -97
  385. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/StdAfx.h +2 -5
  386. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/makefile +1 -2
  387. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.cpp +183 -687
  388. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveCommandLine.h +15 -49
  389. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp +913 -2275
  390. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveExtractCallback.h +115 -353
  391. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.cpp +106 -127
  392. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveName.h +3 -9
  393. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.cpp +35 -272
  394. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ArchiveOpenCallback.h +64 -134
  395. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.cpp +1200 -2608
  396. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Bench.h +20 -64
  397. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.cpp +1 -1
  398. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DefaultName.h +2 -2
  399. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/DirItem.h +36 -253
  400. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.cpp +233 -774
  401. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/EnumDirItems.h +6 -2
  402. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExitCode.h +2 -2
  403. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.cpp +63 -156
  404. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Extract.h +10 -23
  405. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractMode.h +2 -12
  406. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.cpp +6 -22
  407. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ExtractingFilePath.h +4 -4
  408. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.cpp +65 -1991
  409. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/HashCalc.h +29 -241
  410. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/IFileExtractCallback.h +47 -45
  411. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.cpp +179 -442
  412. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/LoadCodecs.h +89 -147
  413. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.cpp +380 -529
  414. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/OpenArchive.h +42 -75
  415. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.cpp +86 -163
  416. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/PropIDUtils.h +5 -5
  417. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Property.h +2 -2
  418. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.cpp +15 -23
  419. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SetProperties.h +2 -2
  420. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/SortUtils.h +2 -2
  421. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/StdAfx.h +2 -5
  422. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.cpp +1 -2
  423. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/TempFiles.h +2 -5
  424. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.cpp +368 -595
  425. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/Update.h +47 -68
  426. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateAction.h +2 -2
  427. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.cpp +146 -444
  428. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateCallback.h +68 -103
  429. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.cpp +42 -111
  430. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdatePair.h +2 -2
  431. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.cpp +3 -7
  432. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/UpdateProduce.h +6 -11
  433. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.cpp +35 -25
  434. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/WorkDir.h +4 -8
  435. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Common/ZipRegistry.h +9 -91
  436. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.cpp +4 -4
  437. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/BenchCon.h +2 -2
  438. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.mak +1 -4
  439. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Console.manifest +0 -3
  440. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.cpp +19 -48
  441. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ConsoleClose.h +12 -18
  442. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.cpp +41 -162
  443. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/ExtractCallbackConsole.h +41 -88
  444. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.cpp +81 -140
  445. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/HashCon.h +17 -27
  446. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/List.cpp +124 -182
  447. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/List.h +7 -22
  448. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/Main.cpp +109 -590
  449. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/MainAr.cpp +2 -62
  450. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.cpp +3 -3
  451. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/OpenCallbackConsole.h +10 -17
  452. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.cpp +10 -13
  453. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/PercentPrinter.h +9 -13
  454. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/StdAfx.h +2 -5
  455. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.cpp +24 -320
  456. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UpdateCallbackConsole.h +26 -50
  457. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.cpp +5 -13
  458. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/UserInputUtils.h +2 -2
  459. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/makefile +2 -6
  460. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.cpp +6 -12
  461. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Explorer/MyMessages.h +4 -4
  462. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.cpp +195 -302
  463. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/BrowseDialog.h +4 -15
  464. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.cpp +2 -2
  465. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ComboDialog.h +6 -6
  466. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/DialogSize.h +2 -2
  467. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.cpp +181 -416
  468. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ExtractCallback.h +197 -216
  469. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/FormatUtils.h +2 -2
  470. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/LangUtils.h +5 -13
  471. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MyWindowsNew.h +5 -48
  472. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.cpp +49 -215
  473. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.h +30 -50
  474. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialog.rc +1 -3
  475. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/OverwriteDialogRes.h +3 -5
  476. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.cpp +5 -5
  477. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.h +6 -6
  478. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PasswordDialog.rc +0 -4
  479. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.cpp +10 -15
  480. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog.h +17 -18
  481. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.cpp +130 -276
  482. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2.h +52 -56
  483. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2Res.h +1 -2
  484. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/ProgressDialog2a.rc +3 -8
  485. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyName.h +2 -2
  486. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/PropertyNameRes.h +0 -9
  487. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.cpp +89 -185
  488. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/SysIconUtils.h +20 -23
  489. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resource.h +1 -23
  490. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/resourceGui.h +0 -10
  491. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/Extract.rc +4 -4
  492. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.cpp +33 -36
  493. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractDialog.h +15 -15
  494. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.cpp +22 -39
  495. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/ExtractGUI.h +3 -4
  496. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/HashGUI.h +2 -2
  497. package/harmony/pushy/src/main/cpp/lzma/CPP/Build.mak +13 -109
  498. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/AutoPtr.h +14 -25
  499. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CRC.cpp +1 -1
  500. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/C_FileIO.cpp +90 -1
  501. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/C_FileIO.h +49 -2
  502. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ComTry.h +2 -2
  503. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CommandLineParser.cpp +7 -41
  504. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CommandLineParser.h +3 -3
  505. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Common.h +29 -14
  506. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/CrcReg.cpp +45 -24
  507. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Defs.h +2 -3
  508. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/DynamicBuffer.h +5 -17
  509. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/IntToString.cpp +110 -132
  510. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/IntToString.h +9 -35
  511. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Lang.h +5 -12
  512. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ListFileUtils.cpp +31 -49
  513. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/ListFileUtils.h +4 -4
  514. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyBuffer.h +21 -59
  515. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyBuffer2.h +10 -95
  516. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyCom.h +81 -497
  517. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyException.h +2 -2
  518. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyGuidDef.h +9 -18
  519. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyInitGuid.h +5 -17
  520. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyLinux.h +2 -35
  521. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyString.cpp +164 -347
  522. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyString.h +35 -246
  523. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyTypes.h +8 -11
  524. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyUnknown.h +11 -2
  525. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyVector.h +94 -184
  526. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyWindows.cpp +11 -158
  527. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/MyWindows.h +54 -148
  528. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/NewHandler.cpp +27 -204
  529. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/NewHandler.h +5 -38
  530. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Sha256Reg.cpp +16 -43
  531. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdAfx.h +2 -2
  532. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdInStream.cpp +11 -20
  533. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdInStream.h +5 -13
  534. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdOutStream.cpp +39 -124
  535. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StdOutStream.h +11 -27
  536. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringConvert.cpp +15 -458
  537. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringConvert.h +2 -24
  538. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringToInt.cpp +89 -99
  539. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/StringToInt.h +2 -19
  540. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/TextConfig.cpp +11 -10
  541. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/TextConfig.h +2 -2
  542. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/UTFConvert.cpp +102 -677
  543. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/UTFConvert.h +5 -377
  544. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Wildcard.cpp +84 -197
  545. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Wildcard.h +25 -107
  546. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/XzCrc64Reg.cpp +14 -11
  547. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/COM.h +8 -24
  548. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/CommonDialog.cpp +113 -197
  549. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/CommonDialog.h +12 -32
  550. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.cpp +4 -4
  551. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ComboBox.h +10 -22
  552. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/CommandBar.h +6 -6
  553. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Dialog.cpp +47 -242
  554. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Dialog.h +51 -94
  555. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Edit.h +2 -2
  556. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ImageList.h +4 -4
  557. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ListView.cpp +26 -33
  558. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ListView.h +22 -32
  559. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ProgressBar.h +13 -13
  560. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.cpp +34 -56
  561. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/PropertyPage.h +9 -9
  562. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ReBar.h +3 -3
  563. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Static.h +2 -2
  564. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/StatusBar.h +5 -5
  565. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/StdAfx.h +2 -5
  566. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/ToolBar.h +3 -3
  567. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Trackbar.h +2 -2
  568. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Window2.cpp +6 -8
  569. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Control/Window2.h +7 -9
  570. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/DLL.cpp +8 -77
  571. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/DLL.h +10 -55
  572. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Defs.h +4 -4
  573. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ErrorMsg.cpp +2 -69
  574. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ErrorMsg.h +2 -3
  575. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileDir.cpp +80 -728
  576. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileDir.h +7 -62
  577. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileFind.cpp +56 -756
  578. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileFind.h +19 -205
  579. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileIO.cpp +47 -569
  580. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileIO.h +28 -283
  581. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileLink.cpp +112 -369
  582. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileMapping.h +3 -3
  583. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileName.cpp +113 -185
  584. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileName.h +14 -41
  585. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileSystem.cpp +10 -66
  586. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/FileSystem.h +2 -6
  587. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Handle.h +4 -6
  588. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryLock.cpp +14 -29
  589. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryLock.h +2 -2
  590. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/NtCheck.h +2 -14
  591. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariant.cpp +56 -102
  592. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariant.h +9 -68
  593. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariantConv.cpp +14 -150
  594. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/PropVariantConv.h +3 -13
  595. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Registry.cpp +128 -212
  596. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Registry.h +20 -32
  597. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ResourceString.cpp +4 -4
  598. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/ResourceString.h +2 -3
  599. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SecurityUtils.cpp +18 -23
  600. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SecurityUtils.h +56 -39
  601. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Shell.cpp +58 -539
  602. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Shell.h +14 -49
  603. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/StdAfx.h +2 -5
  604. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Synchronization.cpp +0 -77
  605. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Synchronization.h +18 -240
  606. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/System.cpp +38 -317
  607. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/System.h +5 -154
  608. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Thread.h +10 -18
  609. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/TimeUtils.cpp +37 -291
  610. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/TimeUtils.h +10 -124
  611. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Window.cpp +7 -7
  612. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Window.h +19 -98
  613. package/harmony/pushy/src/main/cpp/lzma/CS/7zip/Compress/LzmaAlone/LzmaAlone.csproj +90 -0
  614. package/harmony/pushy/src/main/cpp/lzma/DOC/Methods.txt +2 -6
  615. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-history.txt +0 -205
  616. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma-sdk.txt +13 -93
  617. package/harmony/pushy/src/main/cpp/lzma/DOC/lzma.txt +13 -30
  618. package/harmony/pushy/src/main/cpp/lzma/bin/7zS2.sfx +0 -0
  619. package/harmony/pushy/src/main/cpp/lzma/bin/7zS2con.sfx +0 -0
  620. package/harmony/pushy/src/main/cpp/lzma/bin/7zSD.sfx +0 -0
  621. package/harmony/pushy/src/main/cpp/lzma/bin/7zdec.exe +0 -0
  622. package/harmony/pushy/src/main/cpp/lzma/bin/7zr.exe +0 -0
  623. package/harmony/pushy/src/main/cpp/lzma/bin/lzma.exe +0 -0
  624. package/harmony/pushy/src/main/cpp/lzma/bin/x64/7zr.exe +0 -0
  625. package/package.json +1 -1
  626. package/harmony/pushy/src/main/cpp/HDiffPatch/README_cn.md +0 -547
  627. package/harmony/pushy/src/main/cpp/HDiffPatch/_hextobytes.h +0 -112
  628. package/harmony/pushy/src/main/cpp/HDiffPatch/bsdiff_wrapper/bsdiff_wrapper.cpp +0 -389
  629. package/harmony/pushy/src/main/cpp/HDiffPatch/bsdiff_wrapper/bsdiff_wrapper.h +0 -73
  630. package/harmony/pushy/src/main/cpp/HDiffPatch/bsdiff_wrapper/bspatch_wrapper.c +0 -266
  631. package/harmony/pushy/src/main/cpp/HDiffPatch/bsdiff_wrapper/bspatch_wrapper.h +0 -58
  632. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs_patchers.bat +0 -1
  633. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/android_ndk_jni_mk/build_libs_patchers.sh +0 -1
  634. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/bzip2.vcxproj +0 -228
  635. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/hpatchz_test.vcxproj +0 -215
  636. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/libdeflate.vcxproj +0 -256
  637. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/longPathAware.exe.manifest +0 -7
  638. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/lzma.vcxproj +0 -271
  639. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/testHashClash.vcxproj +0 -228
  640. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/zlib.vcxproj +0 -242
  641. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/vc/zstd.vcxproj +0 -287
  642. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/HDiffPatch.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +0 -8
  643. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/libdeflate.xcodeproj/project.pbxproj +0 -286
  644. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode/zlib.xcodeproj/project.pbxproj +0 -308
  645. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode_iOS_hpatchz/hpatch_objc/hpatch_objc.h +0 -33
  646. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode_iOS_hpatchz/hpatch_objc/hpatch_objc.m +0 -33
  647. package/harmony/pushy/src/main/cpp/HDiffPatch/builds/xcode_iOS_hpatchz/hpatchz.xcodeproj/project.pbxproj +0 -774
  648. package/harmony/pushy/src/main/cpp/HDiffPatch/hdiffz_import_patch.c +0 -31
  649. package/harmony/pushy/src/main/cpp/HDiffPatch/hdiffz_import_patch.h +0 -42
  650. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/diff_for_hpatch_lite.h +0 -74
  651. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/match_block.cpp +0 -478
  652. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/match_block.h +0 -222
  653. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/libdivsufsort/divsufsort64.cpp +0 -14
  654. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/match_inplace.cpp +0 -168
  655. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/match_inplace.h +0 -44
  656. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HDiff/private_diff/qsort_parallel.h +0 -125
  657. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_hcache_old_mt.c +0 -243
  658. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_hcache_old_mt.h +0 -51
  659. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_hinput_mt.c +0 -153
  660. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_hinput_mt.h +0 -54
  661. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_houtput_mt.c +0 -158
  662. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_houtput_mt.h +0 -49
  663. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_hpatch_mt.c +0 -294
  664. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_hpatch_mt.h +0 -59
  665. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/_patch_private_mt.h +0 -217
  666. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/hpatch_mt.c +0 -349
  667. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatch/hpatch_mt/hpatch_mt.h +0 -110
  668. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite.c +0 -366
  669. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite.h +0 -91
  670. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite_input_cache.h +0 -31
  671. package/harmony/pushy/src/main/cpp/HDiffPatch/libHDiffPatch/HPatchLite/hpatch_lite_types.h +0 -106
  672. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import_c.c +0 -497
  673. package/harmony/pushy/src/main/cpp/HDiffPatch/libParallel/parallel_import_c.h +0 -106
  674. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sign_diff/_match_in_old_sign.cpp +0 -254
  675. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sign_diff/_match_in_old_sign.h +0 -39
  676. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sign_diff/_sign_diff_type.h +0 -37
  677. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sign_diff/sign_diff.cpp +0 -62
  678. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sign_diff/sign_diff.h +0 -44
  679. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/dict_decompress_plugin.h +0 -156
  680. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/dir_sync_client.cpp +0 -440
  681. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/dir_sync_client.h +0 -88
  682. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/match_in_old.cpp +0 -332
  683. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/match_in_old.h +0 -48
  684. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/match_in_types.h +0 -198
  685. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_client.cpp +0 -697
  686. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_client.h +0 -74
  687. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_client_private.h +0 -262
  688. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_client_type.h +0 -174
  689. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_client_type_private.h +0 -174
  690. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_diff_data.cpp +0 -252
  691. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_diff_data.h +0 -67
  692. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_info_client.cpp +0 -680
  693. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_client/sync_info_client.h +0 -137
  694. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/dict_compress_plugin.h +0 -83
  695. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/dir_sync_make.cpp +0 -125
  696. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/dir_sync_make.h +0 -56
  697. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/hsynz_plugin.h +0 -55
  698. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/match_in_new.cpp +0 -147
  699. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/match_in_new.h +0 -38
  700. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/sync_info_make.cpp +0 -354
  701. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/sync_info_make.h +0 -76
  702. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/sync_make.cpp +0 -521
  703. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/sync_make.h +0 -69
  704. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/sync_make_hash_clash.h +0 -122
  705. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/sync_make/sync_make_private.h +0 -66
  706. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_client_type.h +0 -36
  707. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_client_type_private.h +0 -81
  708. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_client_wrapper.cpp +0 -247
  709. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_client_wrapper.h +0 -71
  710. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_info_client.cpp +0 -351
  711. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_info_client.h +0 -42
  712. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_match_in_old.cpp +0 -124
  713. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_client_wrapper/zsync_match_in_old.h +0 -38
  714. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_make_wrapper/zsync_info_make.cpp +0 -203
  715. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_make_wrapper/zsync_info_make.h +0 -55
  716. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_make_wrapper/zsync_make_wrapper.cpp +0 -79
  717. package/harmony/pushy/src/main/cpp/HDiffPatch/libhsync/zsync_make_wrapper/zsync_make_wrapper.h +0 -66
  718. package/harmony/pushy/src/main/cpp/HDiffPatch/vcdiff_wrapper/vcdiff_wrapper.cpp +0 -628
  719. package/harmony/pushy/src/main/cpp/HDiffPatch/vcdiff_wrapper/vcdiff_wrapper.h +0 -95
  720. package/harmony/pushy/src/main/cpp/HDiffPatch/vcdiff_wrapper/vcpatch_code_table.h +0 -78
  721. package/harmony/pushy/src/main/cpp/HDiffPatch/vcdiff_wrapper/vcpatch_wrapper.c +0 -950
  722. package/harmony/pushy/src/main/cpp/HDiffPatch/vcdiff_wrapper/vcpatch_wrapper.h +0 -72
  723. package/harmony/pushy/src/main/cpp/lzma/Asm/arm64/7zAsm.S +0 -181
  724. package/harmony/pushy/src/main/cpp/lzma/Asm/arm64/LzmaDecOpt.S +0 -1487
  725. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/LzFindOpt.asm +0 -540
  726. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/Sha256Opt.asm +0 -275
  727. package/harmony/pushy/src/main/cpp/lzma/Asm/x86/Sort.asm +0 -860
  728. package/harmony/pushy/src/main/cpp/lzma/C/7zWindows.h +0 -101
  729. package/harmony/pushy/src/main/cpp/lzma/C/7zip_gcc_c.mak +0 -360
  730. package/harmony/pushy/src/main/cpp/lzma/C/Asm_c.mak +0 -12
  731. package/harmony/pushy/src/main/cpp/lzma/C/LzFindOpt.c +0 -578
  732. package/harmony/pushy/src/main/cpp/lzma/C/Sha256Opt.c +0 -451
  733. package/harmony/pushy/src/main/cpp/lzma/C/SwapBytes.c +0 -835
  734. package/harmony/pushy/src/main/cpp/lzma/C/SwapBytes.h +0 -17
  735. package/harmony/pushy/src/main/cpp/lzma/C/Util/Lzma/Precomp.h +0 -13
  736. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/Precomp.c +0 -4
  737. package/harmony/pushy/src/main/cpp/lzma/C/Util/LzmaLib/Precomp.h +0 -13
  738. package/harmony/pushy/src/main/cpp/lzma/C/var_clang.mak +0 -11
  739. package/harmony/pushy/src/main/cpp/lzma/C/var_clang_arm64.mak +0 -12
  740. package/harmony/pushy/src/main/cpp/lzma/C/var_clang_x64.mak +0 -11
  741. package/harmony/pushy/src/main/cpp/lzma/C/var_clang_x86.mak +0 -11
  742. package/harmony/pushy/src/main/cpp/lzma/C/var_gcc.mak +0 -12
  743. package/harmony/pushy/src/main/cpp/lzma/C/var_gcc_arm64.mak +0 -12
  744. package/harmony/pushy/src/main/cpp/lzma/C/var_gcc_x64.mak +0 -10
  745. package/harmony/pushy/src/main/cpp/lzma/C/var_gcc_x86.mak +0 -10
  746. package/harmony/pushy/src/main/cpp/lzma/C/var_mac_arm64.mak +0 -11
  747. package/harmony/pushy/src/main/cpp/lzma/C/var_mac_x64.mak +0 -11
  748. package/harmony/pushy/src/main/cpp/lzma/C/warn_clang.mak +0 -1
  749. package/harmony/pushy/src/main/cpp/lzma/C/warn_clang_mac.mak +0 -1
  750. package/harmony/pushy/src/main/cpp/lzma/C/warn_gcc.mak +0 -51
  751. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/7zip_gcc.mak +0 -1370
  752. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/Alone7z/makefile.gcc +0 -279
  753. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Bundles/SFXCon/makefile.gcc +0 -215
  754. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MultiOutStream.cpp +0 -855
  755. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Common/MultiOutStream.h +0 -160
  756. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/LzFindOpt.mak +0 -7
  757. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/LzmaDec_gcc.mak +0 -14
  758. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Sha256.mak +0 -13
  759. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/Sort.mak +0 -6
  760. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Client7z/makefile.gcc +0 -72
  761. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/Console/makefile.gcc +0 -187
  762. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MemDialog.cpp +0 -218
  763. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MemDialog.h +0 -48
  764. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/MemDialogRes.h +0 -13
  765. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/FileManager/StdAfx.h +0 -67
  766. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/UI/GUI/7zG.exe.manifest +0 -23
  767. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_clang.mak +0 -3
  768. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_clang_arm64.mak +0 -3
  769. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_clang_x64.mak +0 -3
  770. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_clang_x86.mak +0 -3
  771. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_gcc.mak +0 -3
  772. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_gcc_arm64.mak +0 -3
  773. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_gcc_x64.mak +0 -3
  774. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_gcc_x86.mak +0 -3
  775. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_mac_arm64.mak +0 -3
  776. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/cmpl_mac_x64.mak +0 -3
  777. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_clang.mak +0 -11
  778. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_clang_arm64.mak +0 -19
  779. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_clang_x64.mak +0 -11
  780. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_clang_x86.mak +0 -11
  781. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_gcc.mak +0 -12
  782. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_gcc_arm64.mak +0 -12
  783. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_gcc_x64.mak +0 -11
  784. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_gcc_x86.mak +0 -10
  785. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_mac_arm64.mak +0 -13
  786. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/var_mac_x64.mak +0 -11
  787. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/warn_clang.mak +0 -3
  788. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/warn_clang_mac.mak +0 -9
  789. package/harmony/pushy/src/main/cpp/lzma/CPP/7zip/warn_gcc.mak +0 -55
  790. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Common0.h +0 -330
  791. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/DynLimBuf.cpp +0 -93
  792. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/DynLimBuf.h +0 -41
  793. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/LzFindPrepare.cpp +0 -7
  794. package/harmony/pushy/src/main/cpp/lzma/CPP/Common/Sha256Prepare.cpp +0 -7
  795. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Clipboard.cpp +0 -130
  796. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/Clipboard.h +0 -28
  797. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryGlobal.cpp +0 -36
  798. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/MemoryGlobal.h +0 -55
  799. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SystemInfo.cpp +0 -1251
  800. package/harmony/pushy/src/main/cpp/lzma/CPP/Windows/SystemInfo.h +0 -19
@@ -1,217 +1,97 @@
1
1
  /* LzFindMt.c -- multithreaded Match finder for LZ algorithms
2
- : Igor Pavlov : Public domain */
2
+ 2018-12-29 : Igor Pavlov : Public domain */
3
3
 
4
4
  #include "Precomp.h"
5
5
 
6
- // #include <stdio.h>
7
-
8
- #include "CpuArch.h"
9
-
10
6
  #include "LzHash.h"
11
- #include "LzFindMt.h"
12
-
13
- // #define LOG_ITERS
14
-
15
- // #define LOG_THREAD
16
-
17
- #ifdef LOG_THREAD
18
- #include <stdio.h>
19
- #define PRF(x) x
20
- #else
21
- #define PRF(x)
22
- #endif
23
-
24
- #ifdef LOG_ITERS
25
- #include <stdio.h>
26
- extern UInt64 g_NumIters_Tree;
27
- extern UInt64 g_NumIters_Loop;
28
- extern UInt64 g_NumIters_Bytes;
29
- #define LOG_ITER(x) x
30
- #else
31
- #define LOG_ITER(x)
32
- #endif
33
-
34
- #define kMtHashBlockSize ((UInt32)1 << 17)
35
- #define kMtHashNumBlocks (1 << 1)
36
-
37
- #define GET_HASH_BLOCK_OFFSET(i) (((i) & (kMtHashNumBlocks - 1)) * kMtHashBlockSize)
38
-
39
- #define kMtBtBlockSize ((UInt32)1 << 16)
40
- #define kMtBtNumBlocks (1 << 4)
41
-
42
- #define GET_BT_BLOCK_OFFSET(i) (((i) & (kMtBtNumBlocks - 1)) * (size_t)kMtBtBlockSize)
43
-
44
- /*
45
- HASH functions:
46
- We use raw 8/16 bits from a[1] and a[2],
47
- xored with crc(a[0]) and crc(a[3]).
48
- We check a[0], a[3] only. We don't need to compare a[1] and a[2] in matches.
49
- our crc() function provides one-to-one correspondence for low 8-bit values:
50
- (crc[0...0xFF] & 0xFF) <-> [0...0xFF]
51
- */
52
-
53
- #define MF(mt) ((mt)->MatchFinder)
54
- #define MF_CRC (p->crc)
55
-
56
- // #define MF(mt) (&(mt)->MatchFinder)
57
- // #define MF_CRC (p->MatchFinder.crc)
58
-
59
- #define MT_HASH2_CALC \
60
- h2 = (MF_CRC[cur[0]] ^ cur[1]) & (kHash2Size - 1);
61
-
62
- #define MT_HASH3_CALC { \
63
- UInt32 temp = MF_CRC[cur[0]] ^ cur[1]; \
64
- h2 = temp & (kHash2Size - 1); \
65
- h3 = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); }
66
-
67
- /*
68
- #define MT_HASH3_CALC__NO_2 { \
69
- UInt32 temp = p->crc[cur[0]] ^ cur[1]; \
70
- h3 = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); }
71
-
72
- #define MT_HASH4_CALC { \
73
- UInt32 temp = p->crc[cur[0]] ^ cur[1]; \
74
- h2 = temp & (kHash2Size - 1); \
75
- temp ^= ((UInt32)cur[2] << 8); \
76
- h3 = temp & (kHash3Size - 1); \
77
- h4 = (temp ^ (p->crc[cur[3]] << kLzHash_CrcShift_1)) & p->hash4Mask; }
78
- // (kHash4Size - 1);
79
- */
80
7
 
8
+ #include "LzFindMt.h"
81
9
 
82
- Z7_NO_INLINE
83
10
  static void MtSync_Construct(CMtSync *p)
84
11
  {
85
- p->affinityGroup = -1;
86
- p->affinityInGroup = 0;
87
- p->affinity = 0;
88
12
  p->wasCreated = False;
89
13
  p->csWasInitialized = False;
90
14
  p->csWasEntered = False;
91
- Thread_CONSTRUCT(&p->thread)
15
+ Thread_Construct(&p->thread);
92
16
  Event_Construct(&p->canStart);
17
+ Event_Construct(&p->wasStarted);
93
18
  Event_Construct(&p->wasStopped);
94
19
  Semaphore_Construct(&p->freeSemaphore);
95
20
  Semaphore_Construct(&p->filledSemaphore);
96
21
  }
97
22
 
98
-
99
- // #define DEBUG_BUFFER_LOCK // define it to debug lock state
100
-
101
- #ifdef DEBUG_BUFFER_LOCK
102
- #include <stdlib.h>
103
- #define BUFFER_MUST_BE_LOCKED(p) if (!(p)->csWasEntered) exit(1);
104
- #define BUFFER_MUST_BE_UNLOCKED(p) if ( (p)->csWasEntered) exit(1);
105
- #else
106
- #define BUFFER_MUST_BE_LOCKED(p)
107
- #define BUFFER_MUST_BE_UNLOCKED(p)
108
- #endif
109
-
110
- #define LOCK_BUFFER(p) { \
111
- BUFFER_MUST_BE_UNLOCKED(p); \
112
- CriticalSection_Enter(&(p)->cs); \
113
- (p)->csWasEntered = True; }
114
-
115
- #define UNLOCK_BUFFER(p) { \
116
- BUFFER_MUST_BE_LOCKED(p); \
117
- CriticalSection_Leave(&(p)->cs); \
118
- (p)->csWasEntered = False; }
119
-
120
-
121
- Z7_NO_INLINE
122
- static UInt32 MtSync_GetNextBlock(CMtSync *p)
23
+ static void MtSync_GetNextBlock(CMtSync *p)
123
24
  {
124
- UInt32 numBlocks = 0;
125
25
  if (p->needStart)
126
26
  {
127
- BUFFER_MUST_BE_UNLOCKED(p)
128
27
  p->numProcessedBlocks = 1;
129
28
  p->needStart = False;
130
29
  p->stopWriting = False;
131
30
  p->exit = False;
31
+ Event_Reset(&p->wasStarted);
132
32
  Event_Reset(&p->wasStopped);
33
+
133
34
  Event_Set(&p->canStart);
35
+ Event_Wait(&p->wasStarted);
36
+
37
+ // if (mt) MatchFinder_Init_LowHash(mt->MatchFinder);
134
38
  }
135
39
  else
136
40
  {
137
- UNLOCK_BUFFER(p)
138
- // we free current block
139
- numBlocks = p->numProcessedBlocks++;
41
+ CriticalSection_Leave(&p->cs);
42
+ p->csWasEntered = False;
43
+ p->numProcessedBlocks++;
140
44
  Semaphore_Release1(&p->freeSemaphore);
141
45
  }
142
-
143
- // buffer is UNLOCKED here
144
46
  Semaphore_Wait(&p->filledSemaphore);
145
- LOCK_BUFFER(p)
146
- return numBlocks;
47
+ CriticalSection_Enter(&p->cs);
48
+ p->csWasEntered = True;
147
49
  }
148
50
 
51
+ /* MtSync_StopWriting must be called if Writing was started */
149
52
 
150
- /* if Writing (Processing) thread was started, we must call MtSync_StopWriting() */
151
-
152
- Z7_NO_INLINE
153
53
  static void MtSync_StopWriting(CMtSync *p)
154
54
  {
55
+ UInt32 myNumBlocks = p->numProcessedBlocks;
155
56
  if (!Thread_WasCreated(&p->thread) || p->needStart)
156
57
  return;
157
-
158
- PRF(printf("\nMtSync_StopWriting %p\n", p));
159
-
58
+ p->stopWriting = True;
160
59
  if (p->csWasEntered)
161
60
  {
162
- /* we don't use buffer in this thread after StopWriting().
163
- So we UNLOCK buffer.
164
- And we restore default UNLOCKED state for stopped thread */
165
- UNLOCK_BUFFER(p)
61
+ CriticalSection_Leave(&p->cs);
62
+ p->csWasEntered = False;
166
63
  }
167
-
168
- /* We send (p->stopWriting) message and release freeSemaphore
169
- to free current block.
170
- So the thread will see (p->stopWriting) at some
171
- iteration after Wait(freeSemaphore).
172
- The thread doesn't need to fill all avail free blocks,
173
- so we can get fast thread stop.
174
- */
175
-
176
- p->stopWriting = True;
177
- Semaphore_Release1(&p->freeSemaphore); // check semaphore count !!!
178
-
179
- PRF(printf("\nMtSync_StopWriting %p : Event_Wait(&p->wasStopped)\n", p));
64
+ Semaphore_Release1(&p->freeSemaphore);
65
+
180
66
  Event_Wait(&p->wasStopped);
181
- PRF(printf("\nMtSync_StopWriting %p : Event_Wait() finsihed\n", p));
182
-
183
- /* 21.03 : we don't restore samaphore counters here.
184
- We will recreate and reinit samaphores in next start */
185
67
 
68
+ while (myNumBlocks++ != p->numProcessedBlocks)
69
+ {
70
+ Semaphore_Wait(&p->filledSemaphore);
71
+ Semaphore_Release1(&p->freeSemaphore);
72
+ }
186
73
  p->needStart = True;
187
74
  }
188
75
 
189
-
190
- Z7_NO_INLINE
191
76
  static void MtSync_Destruct(CMtSync *p)
192
77
  {
193
- PRF(printf("\nMtSync_Destruct %p\n", p));
194
-
195
78
  if (Thread_WasCreated(&p->thread))
196
79
  {
197
- /* we want thread to be in Stopped state before sending EXIT command.
198
- note: stop(btSync) will stop (htSync) also */
199
80
  MtSync_StopWriting(p);
200
- /* thread in Stopped state here : (p->needStart == true) */
201
81
  p->exit = True;
202
- // if (p->needStart) // it's (true)
203
- Event_Set(&p->canStart); // we send EXIT command to thread
204
- Thread_Wait_Close(&p->thread); // we wait thread finishing
82
+ if (p->needStart)
83
+ Event_Set(&p->canStart);
84
+ Thread_Wait(&p->thread);
85
+ Thread_Close(&p->thread);
205
86
  }
206
-
207
87
  if (p->csWasInitialized)
208
88
  {
209
89
  CriticalSection_Delete(&p->cs);
210
90
  p->csWasInitialized = False;
211
91
  }
212
- p->csWasEntered = False;
213
92
 
214
93
  Event_Close(&p->canStart);
94
+ Event_Close(&p->wasStarted);
215
95
  Event_Close(&p->wasStopped);
216
96
  Semaphore_Close(&p->freeSemaphore);
217
97
  Semaphore_Close(&p->filledSemaphore);
@@ -219,257 +99,80 @@ static void MtSync_Destruct(CMtSync *p)
219
99
  p->wasCreated = False;
220
100
  }
221
101
 
102
+ #define RINOK_THREAD(x) { if ((x) != 0) return SZ_ERROR_THREAD; }
222
103
 
223
- // #define RINOK_THREAD(x) { if ((x) != 0) return SZ_ERROR_THREAD; }
224
- // we want to get real system error codes here instead of SZ_ERROR_THREAD
225
- #define RINOK_THREAD(x) RINOK_WRes(x)
226
-
227
-
228
- // call it before each new file (when new starting is required):
229
- Z7_NO_INLINE
230
- static SRes MtSync_Init(CMtSync *p, UInt32 numBlocks)
231
- {
232
- WRes wres;
233
- // BUFFER_MUST_BE_UNLOCKED(p)
234
- if (!p->needStart || p->csWasEntered)
235
- return SZ_ERROR_FAIL;
236
- wres = Semaphore_OptCreateInit(&p->freeSemaphore, numBlocks, numBlocks);
237
- if (wres == 0)
238
- wres = Semaphore_OptCreateInit(&p->filledSemaphore, 0, numBlocks);
239
- return MY_SRes_HRESULT_FROM_WRes(wres);
240
- }
241
-
242
-
243
- static WRes MtSync_Create_WRes(CMtSync *p, THREAD_FUNC_TYPE startAddress, void *obj)
104
+ static SRes MtSync_Create2(CMtSync *p, THREAD_FUNC_TYPE startAddress, void *obj, UInt32 numBlocks)
244
105
  {
245
- WRes wres;
246
-
247
106
  if (p->wasCreated)
248
107
  return SZ_OK;
249
108
 
250
- RINOK_THREAD(CriticalSection_Init(&p->cs))
109
+ RINOK_THREAD(CriticalSection_Init(&p->cs));
251
110
  p->csWasInitialized = True;
252
- p->csWasEntered = False;
253
111
 
254
- RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->canStart))
255
- RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->wasStopped))
112
+ RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->canStart));
113
+ RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->wasStarted));
114
+ RINOK_THREAD(AutoResetEvent_CreateNotSignaled(&p->wasStopped));
115
+
116
+ RINOK_THREAD(Semaphore_Create(&p->freeSemaphore, numBlocks, numBlocks));
117
+ RINOK_THREAD(Semaphore_Create(&p->filledSemaphore, 0, numBlocks));
256
118
 
257
119
  p->needStart = True;
258
- p->exit = True; /* p->exit is unused before (canStart) Event.
259
- But in case of some unexpected code failure we will get fast exit from thread */
260
-
261
- // return ERROR_TOO_MANY_POSTS; // for debug
262
- // return EINVAL; // for debug
263
-
264
- #ifdef _WIN32
265
- if (p->affinityGroup >= 0)
266
- wres = Thread_Create_With_Group(&p->thread, startAddress, obj,
267
- (unsigned)(UInt32)p->affinityGroup, (CAffinityMask)p->affinityInGroup);
268
- else
269
- #endif
270
- if (p->affinity != 0)
271
- wres = Thread_Create_With_Affinity(&p->thread, startAddress, obj, (CAffinityMask)p->affinity);
272
- else
273
- wres = Thread_Create(&p->thread, startAddress, obj);
274
-
275
- RINOK_THREAD(wres)
120
+
121
+ RINOK_THREAD(Thread_Create(&p->thread, startAddress, obj));
276
122
  p->wasCreated = True;
277
123
  return SZ_OK;
278
124
  }
279
125
 
280
-
281
- Z7_NO_INLINE
282
- static SRes MtSync_Create(CMtSync *p, THREAD_FUNC_TYPE startAddress, void *obj)
126
+ static SRes MtSync_Create(CMtSync *p, THREAD_FUNC_TYPE startAddress, void *obj, UInt32 numBlocks)
283
127
  {
284
- const WRes wres = MtSync_Create_WRes(p, startAddress, obj);
285
- if (wres == 0)
286
- return 0;
287
- MtSync_Destruct(p);
288
- return MY_SRes_HRESULT_FROM_WRes(wres);
128
+ SRes res = MtSync_Create2(p, startAddress, obj, numBlocks);
129
+ if (res != SZ_OK)
130
+ MtSync_Destruct(p);
131
+ return res;
289
132
  }
290
133
 
291
-
292
- // ---------- HASH THREAD ----------
134
+ void MtSync_Init(CMtSync *p) { p->needStart = True; }
293
135
 
294
136
  #define kMtMaxValForNormalize 0xFFFFFFFF
295
- // #define kMtMaxValForNormalize ((1 << 21)) // for debug
296
- // #define kNormalizeAlign (1 << 7) // alignment for speculated accesses
297
-
298
- #ifdef MY_CPU_LE_UNALIGN
299
- #define GetUi24hi_from32(p) ((UInt32)GetUi32(p) >> 8)
300
- #else
301
- #define GetUi24hi_from32(p) ((p)[1] ^ ((UInt32)(p)[2] << 8) ^ ((UInt32)(p)[3] << 16))
302
- #endif
303
-
304
- #define GetHeads_DECL(name) \
305
- static void GetHeads ## name(const Byte *p, UInt32 pos, \
306
- UInt32 *hash, UInt32 hashMask, UInt32 *heads, UInt32 numHeads, const UInt32 *crc)
307
-
308
- #define GetHeads_LOOP(v) \
309
- for (; numHeads != 0; numHeads--) { \
310
- const UInt32 value = (v); \
311
- p++; \
312
- *heads++ = pos - hash[value]; \
313
- hash[value] = pos++; }
314
137
 
315
138
  #define DEF_GetHeads2(name, v, action) \
316
- GetHeads_DECL(name) { action \
317
- GetHeads_LOOP(v) }
318
-
319
- #define DEF_GetHeads(name, v) DEF_GetHeads2(name, v, ;)
139
+ static void GetHeads ## name(const Byte *p, UInt32 pos, \
140
+ UInt32 *hash, UInt32 hashMask, UInt32 *heads, UInt32 numHeads, const UInt32 *crc) \
141
+ { action; for (; numHeads != 0; numHeads--) { \
142
+ const UInt32 value = (v); p++; *heads++ = pos - hash[value]; hash[value] = pos++; } }
320
143
 
321
- DEF_GetHeads2(2, GetUi16(p), UNUSED_VAR(hashMask); UNUSED_VAR(crc); )
322
- DEF_GetHeads(3, (crc[p[0]] ^ GetUi16(p + 1)) & hashMask)
323
- DEF_GetHeads2(3b, GetUi16(p) ^ ((UInt32)(p)[2] << 16), UNUSED_VAR(hashMask); UNUSED_VAR(crc); )
324
- // BT3 is not good for crc collisions for big hashMask values.
325
-
326
- /*
327
- GetHeads_DECL(3b)
328
- {
329
- UNUSED_VAR(hashMask);
330
- UNUSED_VAR(crc);
331
- {
332
- const Byte *pLim = p + numHeads;
333
- if (numHeads == 0)
334
- return;
335
- pLim--;
336
- while (p < pLim)
337
- {
338
- UInt32 v1 = GetUi32(p);
339
- UInt32 v0 = v1 & 0xFFFFFF;
340
- UInt32 h0, h1;
341
- p += 2;
342
- v1 >>= 8;
343
- h0 = hash[v0]; hash[v0] = pos; heads[0] = pos - h0; pos++;
344
- h1 = hash[v1]; hash[v1] = pos; heads[1] = pos - h1; pos++;
345
- heads += 2;
346
- }
347
- if (p == pLim)
348
- {
349
- UInt32 v0 = GetUi16(p) ^ ((UInt32)(p)[2] << 16);
350
- *heads = pos - hash[v0];
351
- hash[v0] = pos;
352
- }
353
- }
354
- }
355
- */
356
-
357
- /*
358
- GetHeads_DECL(4)
359
- {
360
- unsigned sh = 0;
361
- UNUSED_VAR(crc)
362
- while ((hashMask & 0x80000000) == 0)
363
- {
364
- hashMask <<= 1;
365
- sh++;
366
- }
367
- GetHeads_LOOP((GetUi32(p) * 0xa54a1) >> sh)
368
- }
369
- #define GetHeads4b GetHeads4
370
- */
371
-
372
- #define USE_GetHeads_LOCAL_CRC
373
-
374
- #ifdef USE_GetHeads_LOCAL_CRC
375
-
376
- GetHeads_DECL(4)
377
- {
378
- UInt32 crc0[256];
379
- UInt32 crc1[256];
380
- {
381
- unsigned i;
382
- for (i = 0; i < 256; i++)
383
- {
384
- UInt32 v = crc[i];
385
- crc0[i] = v & hashMask;
386
- crc1[i] = (v << kLzHash_CrcShift_1) & hashMask;
387
- // crc1[i] = rotlFixed(v, 8) & hashMask;
388
- }
389
- }
390
- GetHeads_LOOP(crc0[p[0]] ^ crc1[p[3]] ^ (UInt32)GetUi16(p+1))
391
- }
392
-
393
- GetHeads_DECL(4b)
394
- {
395
- UInt32 crc0[256];
396
- {
397
- unsigned i;
398
- for (i = 0; i < 256; i++)
399
- crc0[i] = crc[i] & hashMask;
400
- }
401
- GetHeads_LOOP(crc0[p[0]] ^ GetUi24hi_from32(p))
402
- }
403
-
404
- GetHeads_DECL(5)
405
- {
406
- UInt32 crc0[256];
407
- UInt32 crc1[256];
408
- UInt32 crc2[256];
409
- {
410
- unsigned i;
411
- for (i = 0; i < 256; i++)
412
- {
413
- UInt32 v = crc[i];
414
- crc0[i] = v & hashMask;
415
- crc1[i] = (v << kLzHash_CrcShift_1) & hashMask;
416
- crc2[i] = (v << kLzHash_CrcShift_2) & hashMask;
417
- }
418
- }
419
- GetHeads_LOOP(crc0[p[0]] ^ crc1[p[3]] ^ crc2[p[4]] ^ (UInt32)GetUi16(p+1))
420
- }
421
-
422
- GetHeads_DECL(5b)
423
- {
424
- UInt32 crc0[256];
425
- UInt32 crc1[256];
426
- {
427
- unsigned i;
428
- for (i = 0; i < 256; i++)
429
- {
430
- UInt32 v = crc[i];
431
- crc0[i] = v & hashMask;
432
- crc1[i] = (v << kLzHash_CrcShift_1) & hashMask;
433
- }
434
- }
435
- GetHeads_LOOP(crc0[p[0]] ^ crc1[p[4]] ^ GetUi24hi_from32(p))
436
- }
437
-
438
- #else
439
-
440
- DEF_GetHeads(4, (crc[p[0]] ^ (crc[p[3]] << kLzHash_CrcShift_1) ^ (UInt32)GetUi16(p+1)) & hashMask)
441
- DEF_GetHeads(4b, (crc[p[0]] ^ GetUi24hi_from32(p)) & hashMask)
442
- DEF_GetHeads(5, (crc[p[0]] ^ (crc[p[3]] << kLzHash_CrcShift_1) ^ (crc[p[4]] << kLzHash_CrcShift_2) ^ (UInt32)GetUi16(p + 1)) & hashMask)
443
- DEF_GetHeads(5b, (crc[p[0]] ^ (crc[p[4]] << kLzHash_CrcShift_1) ^ GetUi24hi_from32(p)) & hashMask)
144
+ #define DEF_GetHeads(name, v) DEF_GetHeads2(name, v, ;)
444
145
 
445
- #endif
446
-
146
+ DEF_GetHeads2(2, (p[0] | ((UInt32)p[1] << 8)), UNUSED_VAR(hashMask); UNUSED_VAR(crc); )
147
+ DEF_GetHeads(3, (crc[p[0]] ^ p[1] ^ ((UInt32)p[2] << 8)) & hashMask)
148
+ DEF_GetHeads(4, (crc[p[0]] ^ p[1] ^ ((UInt32)p[2] << 8) ^ (crc[p[3]] << 5)) & hashMask)
149
+ DEF_GetHeads(4b, (crc[p[0]] ^ p[1] ^ ((UInt32)p[2] << 8) ^ ((UInt32)p[3] << 16)) & hashMask)
150
+ /* DEF_GetHeads(5, (crc[p[0]] ^ p[1] ^ ((UInt32)p[2] << 8) ^ (crc[p[3]] << 5) ^ (crc[p[4]] << 3)) & hashMask) */
447
151
 
448
152
  static void HashThreadFunc(CMatchFinderMt *mt)
449
153
  {
450
154
  CMtSync *p = &mt->hashSync;
451
- PRF(printf("\nHashThreadFunc\n"));
452
-
453
155
  for (;;)
454
156
  {
455
- UInt32 blockIndex = 0;
456
- PRF(printf("\nHashThreadFunc : Event_Wait(&p->canStart)\n"));
157
+ UInt32 numProcessedBlocks = 0;
457
158
  Event_Wait(&p->canStart);
458
- PRF(printf("\nHashThreadFunc : Event_Wait(&p->canStart) : after \n"));
459
- if (p->exit)
460
- {
461
- PRF(printf("\nHashThreadFunc : exit \n"));
462
- return;
463
- }
159
+ Event_Set(&p->wasStarted);
464
160
 
465
- MatchFinder_Init_HighHash(MF(mt));
161
+ MatchFinder_Init_HighHash(mt->MatchFinder);
466
162
 
467
163
  for (;;)
468
164
  {
469
- PRF(printf("Hash thread block = %d pos = %d\n", (unsigned)blockIndex, mt->MatchFinder->pos));
165
+ if (p->exit)
166
+ return;
167
+ if (p->stopWriting)
168
+ {
169
+ p->numProcessedBlocks = numProcessedBlocks;
170
+ Event_Set(&p->wasStopped);
171
+ break;
172
+ }
470
173
 
471
174
  {
472
- CMatchFinder *mf = MF(mt);
175
+ CMatchFinder *mf = mt->MatchFinder;
473
176
  if (MatchFinder_NeedMove(mf))
474
177
  {
475
178
  CriticalSection_Enter(&mt->btSync.cs);
@@ -482,178 +185,194 @@ static void HashThreadFunc(CMatchFinderMt *mt)
482
185
  mt->pointerToCurPos -= offset;
483
186
  mt->buffer -= offset;
484
187
  }
485
- CriticalSection_Leave(&mt->hashSync.cs);
486
188
  CriticalSection_Leave(&mt->btSync.cs);
189
+ CriticalSection_Leave(&mt->hashSync.cs);
487
190
  continue;
488
191
  }
489
192
 
490
193
  Semaphore_Wait(&p->freeSemaphore);
491
194
 
492
- if (p->exit) // exit is unexpected here. But we check it here for some failure case
493
- return;
494
-
495
- // for faster stop : we check (p->stopWriting) after Wait(freeSemaphore)
496
- if (p->stopWriting)
497
- break;
498
-
499
195
  MatchFinder_ReadIfRequired(mf);
196
+ if (mf->pos > (kMtMaxValForNormalize - kMtHashBlockSize))
197
+ {
198
+ UInt32 subValue = (mf->pos - mf->historySize - 1);
199
+ MatchFinder_ReduceOffsets(mf, subValue);
200
+ MatchFinder_Normalize3(subValue, mf->hash + mf->fixedHashSize, (size_t)mf->hashMask + 1);
201
+ }
500
202
  {
501
- UInt32 *heads = mt->hashBuf + GET_HASH_BLOCK_OFFSET(blockIndex++);
502
- UInt32 num = Inline_MatchFinder_GetNumAvailableBytes(mf);
203
+ UInt32 *heads = mt->hashBuf + ((numProcessedBlocks++) & kMtHashNumBlocksMask) * kMtHashBlockSize;
204
+ UInt32 num = mf->streamPos - mf->pos;
503
205
  heads[0] = 2;
504
206
  heads[1] = num;
505
-
506
- /* heads[1] contains the number of avail bytes:
507
- if (avail < mf->numHashBytes) :
508
- {
509
- it means that stream was finished
510
- HASH_THREAD and BT_TREAD must move position for heads[1] (avail) bytes.
511
- HASH_THREAD doesn't stop,
512
- HASH_THREAD fills only the header (2 numbers) for all next blocks:
513
- {2, NumHashBytes - 1}, {2,0}, {2,0}, ... , {2,0}
514
- }
515
- else
516
- {
517
- HASH_THREAD and BT_TREAD must move position for (heads[0] - 2) bytes;
518
- }
519
- */
520
-
521
207
  if (num >= mf->numHashBytes)
522
208
  {
523
209
  num = num - mf->numHashBytes + 1;
524
210
  if (num > kMtHashBlockSize - 2)
525
211
  num = kMtHashBlockSize - 2;
526
-
527
- if (mf->pos > (UInt32)kMtMaxValForNormalize - num)
528
- {
529
- const UInt32 subValue = (mf->pos - mf->historySize - 1); // & ~(UInt32)(kNormalizeAlign - 1);
530
- MatchFinder_REDUCE_OFFSETS(mf, subValue)
531
- MatchFinder_Normalize3(subValue, mf->hash + mf->fixedHashSize, (size_t)mf->hashMask + 1);
532
- }
533
-
534
- heads[0] = 2 + num;
535
212
  mt->GetHeadsFunc(mf->buffer, mf->pos, mf->hash + mf->fixedHashSize, mf->hashMask, heads + 2, num, mf->crc);
213
+ heads[0] = 2 + num;
536
214
  }
537
-
538
- mf->pos += num; // wrap over zero is allowed at the end of stream
215
+ mf->pos += num;
539
216
  mf->buffer += num;
540
217
  }
541
218
  }
542
219
 
543
220
  Semaphore_Release1(&p->filledSemaphore);
544
- } // for() processing end
545
-
546
- // p->numBlocks_Sent = blockIndex;
547
- Event_Set(&p->wasStopped);
548
- } // for() thread end
221
+ }
222
+ }
549
223
  }
550
224
 
225
+ static void MatchFinderMt_GetNextBlock_Hash(CMatchFinderMt *p)
226
+ {
227
+ MtSync_GetNextBlock(&p->hashSync);
228
+ p->hashBufPosLimit = p->hashBufPos = ((p->hashSync.numProcessedBlocks - 1) & kMtHashNumBlocksMask) * kMtHashBlockSize;
229
+ p->hashBufPosLimit += p->hashBuf[p->hashBufPos++];
230
+ p->hashNumAvail = p->hashBuf[p->hashBufPos++];
231
+ }
551
232
 
552
-
553
-
554
- // ---------- BT THREAD ----------
555
-
556
- /* we use one variable instead of two (cyclicBufferPos == pos) before CyclicBuf wrap.
557
- here we define fixed offset of (p->pos) from (p->cyclicBufferPos) */
558
- #define CYC_TO_POS_OFFSET 0
559
- // #define CYC_TO_POS_OFFSET 1 // for debug
233
+ #define kEmptyHashValue 0
560
234
 
561
235
  #define MFMT_GM_INLINE
562
236
 
563
237
  #ifdef MFMT_GM_INLINE
564
238
 
565
239
  /*
566
- we use size_t for (pos) instead of UInt32
240
+ we use size_t for _cyclicBufferPos instead of UInt32
567
241
  to eliminate "movsx" BUG in old MSVC x64 compiler.
568
242
  */
569
243
 
244
+ MY_NO_INLINE
245
+ static UInt32 *GetMatchesSpecN(UInt32 lenLimit, UInt32 pos, const Byte *cur, CLzRef *son,
246
+ size_t _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 _cutValue,
247
+ UInt32 *distances, UInt32 _maxLen, const UInt32 *hash, const UInt32 *limit, UInt32 size, UInt32 *posRes)
248
+ {
249
+ do
250
+ {
251
+ UInt32 *_distances = ++distances;
252
+ UInt32 delta = *hash++;
253
+
254
+ CLzRef *ptr0 = son + ((size_t)_cyclicBufferPos << 1) + 1;
255
+ CLzRef *ptr1 = son + ((size_t)_cyclicBufferPos << 1);
256
+ unsigned len0 = 0, len1 = 0;
257
+ UInt32 cutValue = _cutValue;
258
+ unsigned maxLen = (unsigned)_maxLen;
570
259
 
571
- UInt32 * Z7_FASTCALL GetMatchesSpecN_2(const Byte *lenLimit, size_t pos, const Byte *cur, CLzRef *son,
572
- UInt32 _cutValue, UInt32 *d, size_t _maxLen, const UInt32 *hash, const UInt32 *limit, const UInt32 *size,
573
- size_t _cyclicBufferPos, UInt32 _cyclicBufferSize,
574
- UInt32 *posRes);
260
+ /*
261
+ if (size > 1)
262
+ {
263
+ UInt32 delta = *hash;
264
+ if (delta < _cyclicBufferSize)
265
+ {
266
+ UInt32 cyc1 = _cyclicBufferPos + 1;
267
+ CLzRef *pair = son + ((size_t)(cyc1 - delta + ((delta > cyc1) ? _cyclicBufferSize : 0)) << 1);
268
+ Byte b = *(cur + 1 - delta);
269
+ _distances[0] = pair[0];
270
+ _distances[1] = b;
271
+ }
272
+ }
273
+ */
274
+ if (cutValue == 0 || delta >= _cyclicBufferSize)
275
+ {
276
+ *ptr0 = *ptr1 = kEmptyHashValue;
277
+ }
278
+ else
279
+ for(;;)
280
+ {
281
+ {
282
+ CLzRef *pair = son + ((size_t)(_cyclicBufferPos - delta + ((_cyclicBufferPos < delta) ? _cyclicBufferSize : 0)) << 1);
283
+ const Byte *pb = cur - delta;
284
+ unsigned len = (len0 < len1 ? len0 : len1);
285
+ UInt32 pair0 = *pair;
286
+ if (pb[len] == cur[len])
287
+ {
288
+ if (++len != lenLimit && pb[len] == cur[len])
289
+ while (++len != lenLimit)
290
+ if (pb[len] != cur[len])
291
+ break;
292
+ if (maxLen < len)
293
+ {
294
+ maxLen = len;
295
+ *distances++ = (UInt32)len;
296
+ *distances++ = delta - 1;
297
+ if (len == lenLimit)
298
+ {
299
+ UInt32 pair1 = pair[1];
300
+ *ptr1 = pair0;
301
+ *ptr0 = pair1;
302
+ break;
303
+ }
304
+ }
305
+ }
306
+ {
307
+ UInt32 curMatch = pos - delta;
308
+ // delta = pos - *pair;
309
+ // delta = pos - pair[((UInt32)pb[len] - (UInt32)cur[len]) >> 31];
310
+ if (pb[len] < cur[len])
311
+ {
312
+ delta = pos - pair[1];
313
+ *ptr1 = curMatch;
314
+ ptr1 = pair + 1;
315
+ len1 = len;
316
+ }
317
+ else
318
+ {
319
+ delta = pos - *pair;
320
+ *ptr0 = curMatch;
321
+ ptr0 = pair;
322
+ len0 = len;
323
+ }
324
+ }
325
+ }
326
+ if (--cutValue == 0 || delta >= _cyclicBufferSize)
327
+ {
328
+ *ptr0 = *ptr1 = kEmptyHashValue;
329
+ break;
330
+ }
331
+ }
332
+ pos++;
333
+ _cyclicBufferPos++;
334
+ cur++;
335
+ {
336
+ UInt32 num = (UInt32)(distances - _distances);
337
+ _distances[-1] = num;
338
+ }
339
+ }
340
+ while (distances < limit && --size != 0);
341
+ *posRes = pos;
342
+ return distances;
343
+ }
575
344
 
576
345
  #endif
577
346
 
578
347
 
579
- static void BtGetMatches(CMatchFinderMt *p, UInt32 *d)
348
+
349
+ static void BtGetMatches(CMatchFinderMt *p, UInt32 *distances)
580
350
  {
581
351
  UInt32 numProcessed = 0;
582
352
  UInt32 curPos = 2;
353
+ UInt32 limit = kMtBtBlockSize - (p->matchMaxLen * 2); // * 2
583
354
 
584
- /* GetMatchesSpec() functions don't create (len = 1)
585
- in [len, dist] match pairs, if (p->numHashBytes >= 2)
586
- Also we suppose here that (matchMaxLen >= 2).
587
- So the following code for (reserve) is not required
588
- UInt32 reserve = (p->matchMaxLen * 2);
589
- const UInt32 kNumHashBytes_Max = 5; // BT_HASH_BYTES_MAX
590
- if (reserve < kNumHashBytes_Max - 1)
591
- reserve = kNumHashBytes_Max - 1;
592
- const UInt32 limit = kMtBtBlockSize - (reserve);
593
- */
594
-
595
- const UInt32 limit = kMtBtBlockSize - (p->matchMaxLen * 2);
596
-
597
- d[1] = p->hashNumAvail;
598
-
599
- if (p->failure_BT)
600
- {
601
- // printf("\n == 1 BtGetMatches() p->failure_BT\n");
602
- d[0] = 0;
603
- // d[1] = 0;
604
- return;
605
- }
355
+ distances[1] = p->hashNumAvail;
606
356
 
607
357
  while (curPos < limit)
608
358
  {
609
359
  if (p->hashBufPos == p->hashBufPosLimit)
610
360
  {
611
- // MatchFinderMt_GetNextBlock_Hash(p);
612
- UInt32 avail;
613
- {
614
- const UInt32 bi = MtSync_GetNextBlock(&p->hashSync);
615
- const UInt32 k = GET_HASH_BLOCK_OFFSET(bi);
616
- const UInt32 *h = p->hashBuf + k;
617
- avail = h[1];
618
- p->hashBufPosLimit = k + h[0];
619
- p->hashNumAvail = avail;
620
- p->hashBufPos = k + 2;
621
- }
622
-
623
- {
624
- /* we must prevent UInt32 overflow for avail total value,
625
- if avail was increased with new hash block */
626
- UInt32 availSum = numProcessed + avail;
627
- if (availSum < numProcessed)
628
- availSum = (UInt32)(Int32)-1;
629
- d[1] = availSum;
630
- }
631
-
632
- if (avail >= p->numHashBytes)
361
+ MatchFinderMt_GetNextBlock_Hash(p);
362
+ distances[1] = numProcessed + p->hashNumAvail;
363
+ if (p->hashNumAvail >= p->numHashBytes)
633
364
  continue;
634
-
635
- // if (p->hashBufPos != p->hashBufPosLimit) exit(1);
636
-
637
- /* (avail < p->numHashBytes)
638
- It means that stream was finished.
639
- And (avail) - is a number of remaining bytes,
640
- we fill (d) for (avail) bytes for LZ_THREAD (receiver).
641
- but we don't update (p->pos) and (p->cyclicBufferPos) here in BT_THREAD */
642
-
643
- /* here we suppose that we have space enough:
644
- (kMtBtBlockSize - curPos >= p->hashNumAvail) */
645
- p->hashNumAvail = 0;
646
- d[0] = curPos + avail;
647
- d += curPos;
648
- for (; avail != 0; avail--)
649
- *d++ = 0;
365
+ distances[0] = curPos + p->hashNumAvail;
366
+ distances += curPos;
367
+ for (; p->hashNumAvail != 0; p->hashNumAvail--)
368
+ *distances++ = 0;
650
369
  return;
651
370
  }
652
371
  {
653
372
  UInt32 size = p->hashBufPosLimit - p->hashBufPos;
373
+ UInt32 lenLimit = p->matchMaxLen;
654
374
  UInt32 pos = p->pos;
655
375
  UInt32 cyclicBufferPos = p->cyclicBufferPos;
656
- UInt32 lenLimit = p->matchMaxLen;
657
376
  if (lenLimit >= p->hashNumAvail)
658
377
  lenLimit = p->hashNumAvail;
659
378
  {
@@ -665,18 +384,10 @@ static void BtGetMatches(CMatchFinderMt *p, UInt32 *d)
665
384
  size = size2;
666
385
  }
667
386
 
668
- if (pos > (UInt32)kMtMaxValForNormalize - size)
669
- {
670
- const UInt32 subValue = (pos - p->cyclicBufferSize); // & ~(UInt32)(kNormalizeAlign - 1);
671
- pos -= subValue;
672
- p->pos = pos;
673
- MatchFinder_Normalize3(subValue, p->son, (size_t)p->cyclicBufferSize * 2);
674
- }
675
-
676
387
  #ifndef MFMT_GM_INLINE
677
388
  while (curPos < limit && size-- != 0)
678
389
  {
679
- UInt32 *startDistances = d + curPos;
390
+ UInt32 *startDistances = distances + curPos;
680
391
  UInt32 num = (UInt32)(GetMatchesSpec1(lenLimit, pos - p->hashBuf[p->hashBufPos++],
681
392
  pos, p->buffer, p->son, cyclicBufferPos, p->cyclicBufferSize, p->cutValue,
682
393
  startDistances + 1, p->numHashBytes - 1) - startDistances);
@@ -688,112 +399,81 @@ static void BtGetMatches(CMatchFinderMt *p, UInt32 *d)
688
399
  }
689
400
  #else
690
401
  {
691
- UInt32 posRes = pos;
692
- const UInt32 *d_end;
693
- {
694
- d_end = GetMatchesSpecN_2(
695
- p->buffer + lenLimit - 1,
696
- pos, p->buffer, p->son, p->cutValue, d + curPos,
697
- p->numHashBytes - 1, p->hashBuf + p->hashBufPos,
698
- d + limit, p->hashBuf + p->hashBufPos + size,
699
- cyclicBufferPos, p->cyclicBufferSize,
700
- &posRes);
701
- }
702
- {
703
- if (!d_end)
704
- {
705
- // printf("\n == 2 BtGetMatches() p->failure_BT\n");
706
- // internal data failure
707
- p->failure_BT = True;
708
- d[0] = 0;
709
- // d[1] = 0;
710
- return;
711
- }
712
- }
713
- curPos = (UInt32)(d_end - d);
714
- {
715
- const UInt32 processed = posRes - pos;
716
- pos = posRes;
717
- p->hashBufPos += processed;
718
- cyclicBufferPos += processed;
719
- p->buffer += processed;
720
- }
402
+ UInt32 posRes;
403
+ curPos = (UInt32)(GetMatchesSpecN(lenLimit, pos, p->buffer, p->son, cyclicBufferPos, p->cyclicBufferSize, p->cutValue,
404
+ distances + curPos, p->numHashBytes - 1, p->hashBuf + p->hashBufPos,
405
+ distances + limit,
406
+ size, &posRes) - distances);
407
+ p->hashBufPos += posRes - pos;
408
+ cyclicBufferPos += posRes - pos;
409
+ p->buffer += posRes - pos;
410
+ pos = posRes;
721
411
  }
722
412
  #endif
723
413
 
724
- {
725
- const UInt32 processed = pos - p->pos;
726
- numProcessed += processed;
727
- p->hashNumAvail -= processed;
728
- p->pos = pos;
729
- }
414
+ numProcessed += pos - p->pos;
415
+ p->hashNumAvail -= pos - p->pos;
416
+ p->pos = pos;
730
417
  if (cyclicBufferPos == p->cyclicBufferSize)
731
418
  cyclicBufferPos = 0;
732
419
  p->cyclicBufferPos = cyclicBufferPos;
733
420
  }
734
421
  }
735
422
 
736
- d[0] = curPos;
423
+ distances[0] = curPos;
737
424
  }
738
425
 
739
-
740
426
  static void BtFillBlock(CMatchFinderMt *p, UInt32 globalBlockIndex)
741
427
  {
742
428
  CMtSync *sync = &p->hashSync;
743
-
744
- BUFFER_MUST_BE_UNLOCKED(sync)
745
-
746
429
  if (!sync->needStart)
747
430
  {
748
- LOCK_BUFFER(sync)
431
+ CriticalSection_Enter(&sync->cs);
432
+ sync->csWasEntered = True;
749
433
  }
750
434
 
751
- BtGetMatches(p, p->btBuf + GET_BT_BLOCK_OFFSET(globalBlockIndex));
752
-
753
- /* We suppose that we have called GetNextBlock() from start.
754
- So buffer is LOCKED */
435
+ BtGetMatches(p, p->btBuf + (globalBlockIndex & kMtBtNumBlocksMask) * kMtBtBlockSize);
755
436
 
756
- UNLOCK_BUFFER(sync)
757
- }
437
+ if (p->pos > kMtMaxValForNormalize - kMtBtBlockSize)
438
+ {
439
+ UInt32 subValue = p->pos - p->cyclicBufferSize;
440
+ MatchFinder_Normalize3(subValue, p->son, (size_t)p->cyclicBufferSize * 2);
441
+ p->pos -= subValue;
442
+ }
758
443
 
444
+ if (!sync->needStart)
445
+ {
446
+ CriticalSection_Leave(&sync->cs);
447
+ sync->csWasEntered = False;
448
+ }
449
+ }
759
450
 
760
- Z7_NO_INLINE
761
- static void BtThreadFunc(CMatchFinderMt *mt)
451
+ void BtThreadFunc(CMatchFinderMt *mt)
762
452
  {
763
453
  CMtSync *p = &mt->btSync;
764
454
  for (;;)
765
455
  {
766
456
  UInt32 blockIndex = 0;
767
457
  Event_Wait(&p->canStart);
768
-
458
+ Event_Set(&p->wasStarted);
769
459
  for (;;)
770
460
  {
771
- PRF(printf(" BT thread block = %d pos = %d\n", (unsigned)blockIndex, mt->pos));
772
- /* (p->exit == true) is possible after (p->canStart) at first loop iteration
773
- and is unexpected after more Wait(freeSemaphore) iterations */
774
461
  if (p->exit)
775
462
  return;
776
-
777
- Semaphore_Wait(&p->freeSemaphore);
778
-
779
- // for faster stop : we check (p->stopWriting) after Wait(freeSemaphore)
780
463
  if (p->stopWriting)
464
+ {
465
+ p->numProcessedBlocks = blockIndex;
466
+ MtSync_StopWriting(&mt->hashSync);
467
+ Event_Set(&p->wasStopped);
781
468
  break;
782
-
469
+ }
470
+ Semaphore_Wait(&p->freeSemaphore);
783
471
  BtFillBlock(mt, blockIndex++);
784
-
785
472
  Semaphore_Release1(&p->filledSemaphore);
786
473
  }
787
-
788
- // we stop HASH_THREAD here
789
- MtSync_StopWriting(&mt->hashSync);
790
-
791
- // p->numBlocks_Sent = blockIndex;
792
- Event_Set(&p->wasStopped);
793
474
  }
794
475
  }
795
476
 
796
-
797
477
  void MatchFinderMt_Construct(CMatchFinderMt *p)
798
478
  {
799
479
  p->hashBuf = NULL;
@@ -809,39 +489,16 @@ static void MatchFinderMt_FreeMem(CMatchFinderMt *p, ISzAllocPtr alloc)
809
489
 
810
490
  void MatchFinderMt_Destruct(CMatchFinderMt *p, ISzAllocPtr alloc)
811
491
  {
812
- /*
813
- HASH_THREAD can use CriticalSection(s) btSync.cs and hashSync.cs.
814
- So we must be sure that HASH_THREAD will not use CriticalSection(s)
815
- after deleting CriticalSection here.
816
-
817
- we call ReleaseStream(p)
818
- that calls StopWriting(btSync)
819
- that calls StopWriting(hashSync), if it's required to stop HASH_THREAD.
820
- after StopWriting() it's safe to destruct MtSync(s) in any order */
821
-
822
- MatchFinderMt_ReleaseStream(p);
823
-
824
- MtSync_Destruct(&p->btSync);
825
492
  MtSync_Destruct(&p->hashSync);
826
-
827
- LOG_ITER(
828
- printf("\nTree %9d * %7d iter = %9d = sum : bytes = %9d\n",
829
- (UInt32)(g_NumIters_Tree / 1000),
830
- (UInt32)(((UInt64)g_NumIters_Loop * 1000) / (g_NumIters_Tree + 1)),
831
- (UInt32)(g_NumIters_Loop / 1000),
832
- (UInt32)(g_NumIters_Bytes / 1000)
833
- ));
834
-
493
+ MtSync_Destruct(&p->btSync);
835
494
  MatchFinderMt_FreeMem(p, alloc);
836
495
  }
837
496
 
838
-
839
497
  #define kHashBufferSize (kMtHashBlockSize * kMtHashNumBlocks)
840
498
  #define kBtBufferSize (kMtBtBlockSize * kMtBtNumBlocks)
841
499
 
842
-
843
- static THREAD_FUNC_DECL HashThreadFunc2(void *p) { HashThreadFunc((CMatchFinderMt *)p); return 0; }
844
- static THREAD_FUNC_DECL BtThreadFunc2(void *p)
500
+ static THREAD_FUNC_RET_TYPE THREAD_FUNC_CALL_TYPE HashThreadFunc2(void *p) { HashThreadFunc((CMatchFinderMt *)p); return 0; }
501
+ static THREAD_FUNC_RET_TYPE THREAD_FUNC_CALL_TYPE BtThreadFunc2(void *p)
845
502
  {
846
503
  Byte allocaDummy[0x180];
847
504
  unsigned i = 0;
@@ -852,17 +509,16 @@ static THREAD_FUNC_DECL BtThreadFunc2(void *p)
852
509
  return 0;
853
510
  }
854
511
 
855
-
856
512
  SRes MatchFinderMt_Create(CMatchFinderMt *p, UInt32 historySize, UInt32 keepAddBufferBefore,
857
513
  UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAllocPtr alloc)
858
514
  {
859
- CMatchFinder *mf = MF(p);
515
+ CMatchFinder *mf = p->MatchFinder;
860
516
  p->historySize = historySize;
861
517
  if (kMtBtBlockSize <= matchMaxLen * 4)
862
518
  return SZ_ERROR_PARAM;
863
519
  if (!p->hashBuf)
864
520
  {
865
- p->hashBuf = (UInt32 *)ISzAlloc_Alloc(alloc, ((size_t)kHashBufferSize + (size_t)kBtBufferSize) * sizeof(UInt32));
521
+ p->hashBuf = (UInt32 *)ISzAlloc_Alloc(alloc, (kHashBufferSize + kBtBufferSize) * sizeof(UInt32));
866
522
  if (!p->hashBuf)
867
523
  return SZ_ERROR_MEM;
868
524
  p->btBuf = p->hashBuf + kHashBufferSize;
@@ -872,472 +528,262 @@ SRes MatchFinderMt_Create(CMatchFinderMt *p, UInt32 historySize, UInt32 keepAddB
872
528
  if (!MatchFinder_Create(mf, historySize, keepAddBufferBefore, matchMaxLen, keepAddBufferAfter, alloc))
873
529
  return SZ_ERROR_MEM;
874
530
 
875
- RINOK(MtSync_Create(&p->hashSync, HashThreadFunc2, p))
876
- RINOK(MtSync_Create(&p->btSync, BtThreadFunc2, p))
531
+ RINOK(MtSync_Create(&p->hashSync, HashThreadFunc2, p, kMtHashNumBlocks));
532
+ RINOK(MtSync_Create(&p->btSync, BtThreadFunc2, p, kMtBtNumBlocks));
877
533
  return SZ_OK;
878
534
  }
879
535
 
880
-
881
- SRes MatchFinderMt_InitMt(CMatchFinderMt *p)
882
- {
883
- RINOK(MtSync_Init(&p->hashSync, kMtHashNumBlocks))
884
- return MtSync_Init(&p->btSync, kMtBtNumBlocks);
885
- }
886
-
887
-
888
- static void MatchFinderMt_Init(void *_p)
536
+ /* Call it after ReleaseStream / SetStream */
537
+ static void MatchFinderMt_Init(CMatchFinderMt *p)
889
538
  {
890
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
891
- CMatchFinder *mf = MF(p);
539
+ CMatchFinder *mf = p->MatchFinder;
892
540
 
893
541
  p->btBufPos =
894
- p->btBufPosLimit = NULL;
542
+ p->btBufPosLimit = 0;
895
543
  p->hashBufPos =
896
544
  p->hashBufPosLimit = 0;
897
- p->hashNumAvail = 0; // 21.03
898
-
899
- p->failure_BT = False;
900
545
 
901
546
  /* Init without data reading. We don't want to read data in this thread */
902
- MatchFinder_Init_4(mf);
903
-
547
+ MatchFinder_Init_3(mf, False);
904
548
  MatchFinder_Init_LowHash(mf);
905
549
 
906
550
  p->pointerToCurPos = Inline_MatchFinder_GetPointerToCurrentPos(mf);
907
551
  p->btNumAvailBytes = 0;
908
- p->failure_LZ_BT = False;
909
- // p->failure_LZ_LZ = False;
910
-
911
- p->lzPos =
912
- 1; // optimal smallest value
913
- // 0; // for debug: ignores match to start
914
- // kNormalizeAlign; // for debug
552
+ p->lzPos = p->historySize + 1;
915
553
 
916
554
  p->hash = mf->hash;
917
555
  p->fixedHashSize = mf->fixedHashSize;
918
- // p->hash4Mask = mf->hash4Mask;
919
556
  p->crc = mf->crc;
920
- // memcpy(p->crc, mf->crc, sizeof(mf->crc));
921
557
 
922
558
  p->son = mf->son;
923
559
  p->matchMaxLen = mf->matchMaxLen;
924
560
  p->numHashBytes = mf->numHashBytes;
925
-
926
- /* (mf->pos) and (mf->streamPos) were already initialized to 1 in MatchFinder_Init_4() */
927
- // mf->streamPos = mf->pos = 1; // optimal smallest value
928
- // 0; // for debug: ignores match to start
929
- // kNormalizeAlign; // for debug
930
-
931
- /* we must init (p->pos = mf->pos) for BT, because
932
- BT code needs (p->pos == delta_value_for_empty_hash_record == mf->pos) */
933
- p->pos = mf->pos; // do not change it
934
-
935
- p->cyclicBufferPos = (p->pos - CYC_TO_POS_OFFSET);
936
- p->cyclicBufferSize = mf->cyclicBufferSize;
561
+ p->pos = mf->pos;
937
562
  p->buffer = mf->buffer;
563
+ p->cyclicBufferPos = mf->cyclicBufferPos;
564
+ p->cyclicBufferSize = mf->cyclicBufferSize;
938
565
  p->cutValue = mf->cutValue;
939
- // p->son[0] = p->son[1] = 0; // unused: to init skipped record for speculated accesses.
940
566
  }
941
567
 
942
-
943
568
  /* ReleaseStream is required to finish multithreading */
944
569
  void MatchFinderMt_ReleaseStream(CMatchFinderMt *p)
945
570
  {
946
- // Sleep(1); // for debug
947
571
  MtSync_StopWriting(&p->btSync);
948
- // Sleep(200); // for debug
949
572
  /* p->MatchFinder->ReleaseStream(); */
950
573
  }
951
574
 
952
-
953
- Z7_NO_INLINE
954
- static UInt32 MatchFinderMt_GetNextBlock_Bt(CMatchFinderMt *p)
575
+ static void MatchFinderMt_Normalize(CMatchFinderMt *p)
955
576
  {
956
- if (p->failure_LZ_BT)
957
- p->btBufPos = p->failureBuf;
958
- else
959
- {
960
- const UInt32 bi = MtSync_GetNextBlock(&p->btSync);
961
- const UInt32 *bt = p->btBuf + GET_BT_BLOCK_OFFSET(bi);
962
- {
963
- const UInt32 numItems = bt[0];
964
- p->btBufPosLimit = bt + numItems;
965
- p->btNumAvailBytes = bt[1];
966
- p->btBufPos = bt + 2;
967
- if (numItems < 2 || numItems > kMtBtBlockSize)
968
- {
969
- p->failureBuf[0] = 0;
970
- p->btBufPos = p->failureBuf;
971
- p->btBufPosLimit = p->failureBuf + 1;
972
- p->failure_LZ_BT = True;
973
- // p->btNumAvailBytes = 0;
974
- /* we don't want to decrease AvailBytes, that was load before.
975
- that can be unxepected for the code that have loaded anopther value before */
976
- }
977
- }
978
-
979
- if (p->lzPos >= (UInt32)kMtMaxValForNormalize - (UInt32)kMtBtBlockSize)
980
- {
981
- /* we don't check (lzPos) over exact avail bytes in (btBuf).
982
- (fixedHashSize) is small, so normalization is fast */
983
- const UInt32 subValue = (p->lzPos - p->historySize - 1); // & ~(UInt32)(kNormalizeAlign - 1);
984
- p->lzPos -= subValue;
985
- MatchFinder_Normalize3(subValue, p->hash, p->fixedHashSize);
986
- }
987
- }
988
- return p->btNumAvailBytes;
577
+ MatchFinder_Normalize3(p->lzPos - p->historySize - 1, p->hash, p->fixedHashSize);
578
+ p->lzPos = p->historySize + 1;
989
579
  }
990
580
 
581
+ static void MatchFinderMt_GetNextBlock_Bt(CMatchFinderMt *p)
582
+ {
583
+ UInt32 blockIndex;
584
+ MtSync_GetNextBlock(&p->btSync);
585
+ blockIndex = ((p->btSync.numProcessedBlocks - 1) & kMtBtNumBlocksMask);
586
+ p->btBufPosLimit = p->btBufPos = blockIndex * kMtBtBlockSize;
587
+ p->btBufPosLimit += p->btBuf[p->btBufPos++];
588
+ p->btNumAvailBytes = p->btBuf[p->btBufPos++];
589
+ if (p->lzPos >= kMtMaxValForNormalize - kMtBtBlockSize)
590
+ MatchFinderMt_Normalize(p);
591
+ }
991
592
 
992
-
993
- static const Byte * MatchFinderMt_GetPointerToCurrentPos(void *_p)
593
+ static const Byte * MatchFinderMt_GetPointerToCurrentPos(CMatchFinderMt *p)
994
594
  {
995
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
996
595
  return p->pointerToCurPos;
997
596
  }
998
597
 
999
-
1000
598
  #define GET_NEXT_BLOCK_IF_REQUIRED if (p->btBufPos == p->btBufPosLimit) MatchFinderMt_GetNextBlock_Bt(p);
1001
599
 
1002
-
1003
- static UInt32 MatchFinderMt_GetNumAvailableBytes(void *_p)
600
+ static UInt32 MatchFinderMt_GetNumAvailableBytes(CMatchFinderMt *p)
1004
601
  {
1005
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
1006
- if (p->btBufPos != p->btBufPosLimit)
1007
- return p->btNumAvailBytes;
1008
- return MatchFinderMt_GetNextBlock_Bt(p);
602
+ GET_NEXT_BLOCK_IF_REQUIRED;
603
+ return p->btNumAvailBytes;
1009
604
  }
1010
605
 
1011
-
1012
- // #define CHECK_FAILURE_LZ(_match_, _pos_) if (_match_ >= _pos_) { p->failure_LZ_LZ = True; return d; }
1013
- #define CHECK_FAILURE_LZ(_match_, _pos_)
1014
-
1015
- static UInt32 * MixMatches2(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d)
606
+ static UInt32 * MixMatches2(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *distances)
1016
607
  {
1017
- UInt32 h2, c2;
608
+ UInt32 h2, curMatch2;
1018
609
  UInt32 *hash = p->hash;
1019
610
  const Byte *cur = p->pointerToCurPos;
1020
- const UInt32 m = p->lzPos;
611
+ UInt32 lzPos = p->lzPos;
1021
612
  MT_HASH2_CALC
1022
613
 
1023
- c2 = hash[h2];
1024
- hash[h2] = m;
614
+ curMatch2 = hash[h2];
615
+ hash[h2] = lzPos;
1025
616
 
1026
- if (c2 >= matchMinPos)
1027
- {
1028
- CHECK_FAILURE_LZ(c2, m)
1029
- if (cur[(ptrdiff_t)c2 - (ptrdiff_t)m] == cur[0])
617
+ if (curMatch2 >= matchMinPos)
618
+ if (cur[(ptrdiff_t)curMatch2 - lzPos] == cur[0])
1030
619
  {
1031
- *d++ = 2;
1032
- *d++ = m - c2 - 1;
620
+ *distances++ = 2;
621
+ *distances++ = lzPos - curMatch2 - 1;
1033
622
  }
1034
- }
1035
623
 
1036
- return d;
624
+ return distances;
1037
625
  }
1038
626
 
1039
- static UInt32 * MixMatches3(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d)
627
+ static UInt32 * MixMatches3(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *distances)
1040
628
  {
1041
- UInt32 h2, h3, c2, c3;
629
+ UInt32 h2, h3, curMatch2, curMatch3;
1042
630
  UInt32 *hash = p->hash;
1043
631
  const Byte *cur = p->pointerToCurPos;
1044
- const UInt32 m = p->lzPos;
632
+ UInt32 lzPos = p->lzPos;
1045
633
  MT_HASH3_CALC
1046
634
 
1047
- c2 = hash[h2];
1048
- c3 = (hash + kFix3HashSize)[h3];
635
+ curMatch2 = hash[ h2];
636
+ curMatch3 = (hash + kFix3HashSize)[h3];
1049
637
 
1050
- hash[h2] = m;
1051
- (hash + kFix3HashSize)[h3] = m;
638
+ hash[ h2] = lzPos;
639
+ (hash + kFix3HashSize)[h3] = lzPos;
1052
640
 
1053
- if (c2 >= matchMinPos)
641
+ if (curMatch2 >= matchMinPos && cur[(ptrdiff_t)curMatch2 - lzPos] == cur[0])
1054
642
  {
1055
- CHECK_FAILURE_LZ(c2, m)
1056
- if (cur[(ptrdiff_t)c2 - (ptrdiff_t)m] == cur[0])
643
+ distances[1] = lzPos - curMatch2 - 1;
644
+ if (cur[(ptrdiff_t)curMatch2 - lzPos + 2] == cur[2])
1057
645
  {
1058
- d[1] = m - c2 - 1;
1059
- if (cur[(ptrdiff_t)c2 - (ptrdiff_t)m + 2] == cur[2])
1060
- {
1061
- d[0] = 3;
1062
- return d + 2;
1063
- }
1064
- d[0] = 2;
1065
- d += 2;
646
+ distances[0] = 3;
647
+ return distances + 2;
1066
648
  }
649
+ distances[0] = 2;
650
+ distances += 2;
1067
651
  }
1068
652
 
1069
- if (c3 >= matchMinPos)
653
+ if (curMatch3 >= matchMinPos && cur[(ptrdiff_t)curMatch3 - lzPos] == cur[0])
1070
654
  {
1071
- CHECK_FAILURE_LZ(c3, m)
1072
- if (cur[(ptrdiff_t)c3 - (ptrdiff_t)m] == cur[0])
1073
- {
1074
- *d++ = 3;
1075
- *d++ = m - c3 - 1;
1076
- }
655
+ *distances++ = 3;
656
+ *distances++ = lzPos - curMatch3 - 1;
1077
657
  }
1078
658
 
1079
- return d;
659
+ return distances;
1080
660
  }
1081
661
 
1082
-
1083
- #define INCREASE_LZ_POS p->lzPos++; p->pointerToCurPos++;
1084
-
1085
662
  /*
1086
- static
1087
- UInt32* MatchFinderMt_GetMatches_Bt4(CMatchFinderMt *p, UInt32 *d)
1088
- {
1089
- const UInt32 *bt = p->btBufPos;
1090
- const UInt32 len = *bt++;
1091
- const UInt32 *btLim = bt + len;
1092
- UInt32 matchMinPos;
1093
- UInt32 avail = p->btNumAvailBytes - 1;
1094
- p->btBufPos = btLim;
1095
-
1096
- {
1097
- p->btNumAvailBytes = avail;
1098
-
1099
- #define BT_HASH_BYTES_MAX 5
1100
-
1101
- matchMinPos = p->lzPos;
1102
-
1103
- if (len != 0)
1104
- matchMinPos -= bt[1];
1105
- else if (avail < (BT_HASH_BYTES_MAX - 1) - 1)
1106
- {
1107
- INCREASE_LZ_POS
1108
- return d;
1109
- }
1110
- else
1111
- {
1112
- const UInt32 hs = p->historySize;
1113
- if (matchMinPos > hs)
1114
- matchMinPos -= hs;
1115
- else
1116
- matchMinPos = 1;
1117
- }
1118
- }
1119
-
1120
- for (;;)
1121
- {
1122
-
1123
- UInt32 h2, h3, c2, c3;
1124
- UInt32 *hash = p->hash;
1125
- const Byte *cur = p->pointerToCurPos;
1126
- UInt32 m = p->lzPos;
1127
- MT_HASH3_CALC
1128
-
1129
- c2 = hash[h2];
1130
- c3 = (hash + kFix3HashSize)[h3];
1131
-
1132
- hash[h2] = m;
1133
- (hash + kFix3HashSize)[h3] = m;
1134
-
1135
- if (c2 >= matchMinPos && cur[(ptrdiff_t)c2 - (ptrdiff_t)m] == cur[0])
1136
- {
1137
- d[1] = m - c2 - 1;
1138
- if (cur[(ptrdiff_t)c2 - (ptrdiff_t)m + 2] == cur[2])
1139
- {
1140
- d[0] = 3;
1141
- d += 2;
1142
- break;
1143
- }
1144
- // else
1145
- {
1146
- d[0] = 2;
1147
- d += 2;
1148
- }
1149
- }
1150
- if (c3 >= matchMinPos && cur[(ptrdiff_t)c3 - (ptrdiff_t)m] == cur[0])
1151
- {
1152
- *d++ = 3;
1153
- *d++ = m - c3 - 1;
1154
- }
1155
- break;
1156
- }
1157
-
1158
- if (len != 0)
1159
- {
1160
- do
1161
- {
1162
- const UInt32 v0 = bt[0];
1163
- const UInt32 v1 = bt[1];
1164
- bt += 2;
1165
- d[0] = v0;
1166
- d[1] = v1;
1167
- d += 2;
1168
- }
1169
- while (bt != btLim);
1170
- }
1171
- INCREASE_LZ_POS
1172
- return d;
1173
- }
1174
- */
1175
-
1176
-
1177
- static UInt32 * MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *d)
663
+ static UInt32 *MixMatches4(CMatchFinderMt *p, UInt32 matchMinPos, UInt32 *distances)
1178
664
  {
1179
- UInt32 h2, h3, /* h4, */ c2, c3 /* , c4 */;
665
+ UInt32 h2, h3, h4, curMatch2, curMatch3, curMatch4;
1180
666
  UInt32 *hash = p->hash;
1181
667
  const Byte *cur = p->pointerToCurPos;
1182
- const UInt32 m = p->lzPos;
1183
- MT_HASH3_CALC
1184
- // MT_HASH4_CALC
1185
- c2 = hash[h2];
1186
- c3 = (hash + kFix3HashSize)[h3];
1187
- // c4 = (hash + kFix4HashSize)[h4];
668
+ UInt32 lzPos = p->lzPos;
669
+ MT_HASH4_CALC
670
+
671
+ curMatch2 = hash[ h2];
672
+ curMatch3 = (hash + kFix3HashSize)[h3];
673
+ curMatch4 = (hash + kFix4HashSize)[h4];
1188
674
 
1189
- hash[h2] = m;
1190
- (hash + kFix3HashSize)[h3] = m;
1191
- // (hash + kFix4HashSize)[h4] = m;
675
+ hash[ h2] = lzPos;
676
+ (hash + kFix3HashSize)[h3] = lzPos;
677
+ (hash + kFix4HashSize)[h4] = lzPos;
1192
678
 
1193
- // #define BT5_USE_H2
1194
- // #ifdef BT5_USE_H2
1195
- if (c2 >= matchMinPos && cur[(ptrdiff_t)c2 - (ptrdiff_t)m] == cur[0])
679
+ if (curMatch2 >= matchMinPos && cur[(ptrdiff_t)curMatch2 - lzPos] == cur[0])
1196
680
  {
1197
- d[1] = m - c2 - 1;
1198
- if (cur[(ptrdiff_t)c2 - (ptrdiff_t)m + 2] == cur[2])
681
+ distances[1] = lzPos - curMatch2 - 1;
682
+ if (cur[(ptrdiff_t)curMatch2 - lzPos + 2] == cur[2])
1199
683
  {
1200
- // d[0] = (cur[(ptrdiff_t)c2 - (ptrdiff_t)m + 3] == cur[3]) ? 4 : 3;
1201
- // return d + 2;
1202
-
1203
- if (cur[(ptrdiff_t)c2 - (ptrdiff_t)m + 3] == cur[3])
1204
- {
1205
- d[0] = 4;
1206
- return d + 2;
1207
- }
1208
- d[0] = 3;
1209
- d += 2;
1210
-
1211
- #ifdef BT5_USE_H4
1212
- if (c4 >= matchMinPos)
1213
- if (
1214
- cur[(ptrdiff_t)c4 - (ptrdiff_t)m] == cur[0] &&
1215
- cur[(ptrdiff_t)c4 - (ptrdiff_t)m + 3] == cur[3]
1216
- )
1217
- {
1218
- *d++ = 4;
1219
- *d++ = m - c4 - 1;
1220
- }
1221
- #endif
1222
- return d;
684
+ distances[0] = (cur[(ptrdiff_t)curMatch2 - lzPos + 3] == cur[3]) ? 4 : 3;
685
+ return distances + 2;
1223
686
  }
1224
- d[0] = 2;
1225
- d += 2;
687
+ distances[0] = 2;
688
+ distances += 2;
1226
689
  }
1227
- // #endif
1228
690
 
1229
- if (c3 >= matchMinPos && cur[(ptrdiff_t)c3 - (ptrdiff_t)m] == cur[0])
691
+ if (curMatch3 >= matchMinPos && cur[(ptrdiff_t)curMatch3 - lzPos] == cur[0])
1230
692
  {
1231
- d[1] = m - c3 - 1;
1232
- if (cur[(ptrdiff_t)c3 - (ptrdiff_t)m + 3] == cur[3])
693
+ distances[1] = lzPos - curMatch3 - 1;
694
+ if (cur[(ptrdiff_t)curMatch3 - lzPos + 3] == cur[3])
1233
695
  {
1234
- d[0] = 4;
1235
- return d + 2;
696
+ distances[0] = 4;
697
+ return distances + 2;
1236
698
  }
1237
- d[0] = 3;
1238
- d += 2;
699
+ distances[0] = 3;
700
+ distances += 2;
1239
701
  }
1240
702
 
1241
- #ifdef BT5_USE_H4
1242
- if (c4 >= matchMinPos)
703
+ if (curMatch4 >= matchMinPos)
1243
704
  if (
1244
- cur[(ptrdiff_t)c4 - (ptrdiff_t)m] == cur[0] &&
1245
- cur[(ptrdiff_t)c4 - (ptrdiff_t)m + 3] == cur[3]
705
+ cur[(ptrdiff_t)curMatch4 - lzPos] == cur[0] &&
706
+ cur[(ptrdiff_t)curMatch4 - lzPos + 3] == cur[3]
1246
707
  )
1247
708
  {
1248
- *d++ = 4;
1249
- *d++ = m - c4 - 1;
709
+ *distances++ = 4;
710
+ *distances++ = lzPos - curMatch4 - 1;
1250
711
  }
1251
- #endif
1252
712
 
1253
- return d;
713
+ return distances;
1254
714
  }
715
+ */
1255
716
 
717
+ #define INCREASE_LZ_POS p->lzPos++; p->pointerToCurPos++;
1256
718
 
1257
- static UInt32 * MatchFinderMt2_GetMatches(void *_p, UInt32 *d)
719
+ static UInt32 MatchFinderMt2_GetMatches(CMatchFinderMt *p, UInt32 *distances)
1258
720
  {
1259
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
1260
- const UInt32 *bt = p->btBufPos;
1261
- const UInt32 len = *bt++;
1262
- const UInt32 *btLim = bt + len;
1263
- p->btBufPos = btLim;
721
+ const UInt32 *btBuf = p->btBuf + p->btBufPos;
722
+ UInt32 len = *btBuf++;
723
+ p->btBufPos += 1 + len;
1264
724
  p->btNumAvailBytes--;
1265
- INCREASE_LZ_POS
1266
725
  {
1267
- while (bt != btLim)
726
+ UInt32 i;
727
+ for (i = 0; i < len; i += 2)
1268
728
  {
1269
- const UInt32 v0 = bt[0];
1270
- const UInt32 v1 = bt[1];
1271
- bt += 2;
1272
- d[0] = v0;
1273
- d[1] = v1;
1274
- d += 2;
729
+ UInt32 v0 = btBuf[0];
730
+ UInt32 v1 = btBuf[1];
731
+ btBuf += 2;
732
+ distances[0] = v0;
733
+ distances[1] = v1;
734
+ distances += 2;
1275
735
  }
1276
736
  }
1277
- return d;
737
+ INCREASE_LZ_POS
738
+ return len;
1278
739
  }
1279
740
 
1280
-
1281
-
1282
- static UInt32 * MatchFinderMt_GetMatches(void *_p, UInt32 *d)
741
+ static UInt32 MatchFinderMt_GetMatches(CMatchFinderMt *p, UInt32 *distances)
1283
742
  {
1284
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
1285
- const UInt32 *bt = p->btBufPos;
1286
- UInt32 len = *bt++;
1287
- const UInt32 avail = p->btNumAvailBytes - 1;
1288
- p->btNumAvailBytes = avail;
1289
- p->btBufPos = bt + len;
743
+ const UInt32 *btBuf = p->btBuf + p->btBufPos;
744
+ UInt32 len = *btBuf++;
745
+ p->btBufPos += 1 + len;
746
+
1290
747
  if (len == 0)
1291
748
  {
1292
- #define BT_HASH_BYTES_MAX 5
1293
- if (avail >= (BT_HASH_BYTES_MAX - 1) - 1)
1294
- {
1295
- UInt32 m = p->lzPos;
1296
- if (m > p->historySize)
1297
- m -= p->historySize;
1298
- else
1299
- m = 1;
1300
- d = p->MixMatchesFunc(p, m, d);
1301
- }
749
+ /* change for bt5 ! */
750
+ if (p->btNumAvailBytes-- >= 4)
751
+ len = (UInt32)(p->MixMatchesFunc(p, p->lzPos - p->historySize, distances) - (distances));
1302
752
  }
1303
753
  else
1304
754
  {
1305
- /*
1306
- first match pair from BinTree: (match_len, match_dist),
1307
- (match_len >= numHashBytes).
1308
- MixMatchesFunc() inserts only hash matches that are nearer than (match_dist)
1309
- */
1310
- d = p->MixMatchesFunc(p, p->lzPos - bt[1], d);
1311
- // if (d) // check for failure
755
+ /* Condition: there are matches in btBuf with length < p->numHashBytes */
756
+ UInt32 *distances2;
757
+ p->btNumAvailBytes--;
758
+ distances2 = p->MixMatchesFunc(p, p->lzPos - btBuf[1], distances);
1312
759
  do
1313
760
  {
1314
- const UInt32 v0 = bt[0];
1315
- const UInt32 v1 = bt[1];
1316
- bt += 2;
1317
- d[0] = v0;
1318
- d[1] = v1;
1319
- d += 2;
761
+ UInt32 v0 = btBuf[0];
762
+ UInt32 v1 = btBuf[1];
763
+ btBuf += 2;
764
+ distances2[0] = v0;
765
+ distances2[1] = v1;
766
+ distances2 += 2;
1320
767
  }
1321
- while (len -= 2);
768
+ while ((len -= 2) != 0);
769
+ len = (UInt32)(distances2 - (distances));
1322
770
  }
1323
771
  INCREASE_LZ_POS
1324
- return d;
772
+ return len;
1325
773
  }
1326
774
 
1327
775
  #define SKIP_HEADER2_MT do { GET_NEXT_BLOCK_IF_REQUIRED
1328
776
  #define SKIP_HEADER_MT(n) SKIP_HEADER2_MT if (p->btNumAvailBytes-- >= (n)) { const Byte *cur = p->pointerToCurPos; UInt32 *hash = p->hash;
1329
- #define SKIP_FOOTER_MT } INCREASE_LZ_POS p->btBufPos += (size_t)*p->btBufPos + 1; } while (--num != 0);
777
+ #define SKIP_FOOTER_MT } INCREASE_LZ_POS p->btBufPos += p->btBuf[p->btBufPos] + 1; } while (--num != 0);
1330
778
 
1331
- static void MatchFinderMt0_Skip(void *_p, UInt32 num)
779
+ static void MatchFinderMt0_Skip(CMatchFinderMt *p, UInt32 num)
1332
780
  {
1333
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
1334
781
  SKIP_HEADER2_MT { p->btNumAvailBytes--;
1335
782
  SKIP_FOOTER_MT
1336
783
  }
1337
784
 
1338
- static void MatchFinderMt2_Skip(void *_p, UInt32 num)
785
+ static void MatchFinderMt2_Skip(CMatchFinderMt *p, UInt32 num)
1339
786
  {
1340
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
1341
787
  SKIP_HEADER_MT(2)
1342
788
  UInt32 h2;
1343
789
  MT_HASH2_CALC
@@ -1345,9 +791,8 @@ static void MatchFinderMt2_Skip(void *_p, UInt32 num)
1345
791
  SKIP_FOOTER_MT
1346
792
  }
1347
793
 
1348
- static void MatchFinderMt3_Skip(void *_p, UInt32 num)
794
+ static void MatchFinderMt3_Skip(CMatchFinderMt *p, UInt32 num)
1349
795
  {
1350
- CMatchFinderMt *p = (CMatchFinderMt *)_p;
1351
796
  SKIP_HEADER_MT(3)
1352
797
  UInt32 h2, h3;
1353
798
  MT_HASH3_CALC
@@ -1358,16 +803,12 @@ static void MatchFinderMt3_Skip(void *_p, UInt32 num)
1358
803
  }
1359
804
 
1360
805
  /*
1361
- // MatchFinderMt4_Skip() is similar to MatchFinderMt3_Skip().
1362
- // The difference is that MatchFinderMt3_Skip() updates hash for last 3 bytes of stream.
1363
-
1364
806
  static void MatchFinderMt4_Skip(CMatchFinderMt *p, UInt32 num)
1365
807
  {
1366
808
  SKIP_HEADER_MT(4)
1367
- UInt32 h2, h3; // h4
1368
- MT_HASH3_CALC
1369
- // MT_HASH4_CALC
1370
- // (hash + kFix4HashSize)[h4] =
809
+ UInt32 h2, h3, h4;
810
+ MT_HASH4_CALC
811
+ (hash + kFix4HashSize)[h4] =
1371
812
  (hash + kFix3HashSize)[h3] =
1372
813
  hash[ h2] =
1373
814
  p->lzPos;
@@ -1375,48 +816,38 @@ static void MatchFinderMt4_Skip(CMatchFinderMt *p, UInt32 num)
1375
816
  }
1376
817
  */
1377
818
 
1378
- void MatchFinderMt_CreateVTable(CMatchFinderMt *p, IMatchFinder2 *vTable)
819
+ void MatchFinderMt_CreateVTable(CMatchFinderMt *p, IMatchFinder *vTable)
1379
820
  {
1380
- vTable->Init = MatchFinderMt_Init;
1381
- vTable->GetNumAvailableBytes = MatchFinderMt_GetNumAvailableBytes;
1382
- vTable->GetPointerToCurrentPos = MatchFinderMt_GetPointerToCurrentPos;
1383
- vTable->GetMatches = MatchFinderMt_GetMatches;
821
+ vTable->Init = (Mf_Init_Func)MatchFinderMt_Init;
822
+ vTable->GetNumAvailableBytes = (Mf_GetNumAvailableBytes_Func)MatchFinderMt_GetNumAvailableBytes;
823
+ vTable->GetPointerToCurrentPos = (Mf_GetPointerToCurrentPos_Func)MatchFinderMt_GetPointerToCurrentPos;
824
+ vTable->GetMatches = (Mf_GetMatches_Func)MatchFinderMt_GetMatches;
1384
825
 
1385
- switch (MF(p)->numHashBytes)
826
+ switch (p->MatchFinder->numHashBytes)
1386
827
  {
1387
828
  case 2:
1388
829
  p->GetHeadsFunc = GetHeads2;
1389
- p->MixMatchesFunc = NULL;
1390
- vTable->Skip = MatchFinderMt0_Skip;
1391
- vTable->GetMatches = MatchFinderMt2_GetMatches;
830
+ p->MixMatchesFunc = (Mf_Mix_Matches)NULL;
831
+ vTable->Skip = (Mf_Skip_Func)MatchFinderMt0_Skip;
832
+ vTable->GetMatches = (Mf_GetMatches_Func)MatchFinderMt2_GetMatches;
1392
833
  break;
1393
834
  case 3:
1394
- p->GetHeadsFunc = MF(p)->bigHash ? GetHeads3b : GetHeads3;
1395
- p->MixMatchesFunc = MixMatches2;
1396
- vTable->Skip = MatchFinderMt2_Skip;
835
+ p->GetHeadsFunc = GetHeads3;
836
+ p->MixMatchesFunc = (Mf_Mix_Matches)MixMatches2;
837
+ vTable->Skip = (Mf_Skip_Func)MatchFinderMt2_Skip;
1397
838
  break;
1398
- case 4:
1399
- p->GetHeadsFunc = MF(p)->bigHash ? GetHeads4b : GetHeads4;
1400
-
1401
- // it's fast inline version of GetMatches()
1402
- // vTable->GetMatches = MatchFinderMt_GetMatches_Bt4;
1403
-
1404
- p->MixMatchesFunc = MixMatches3;
1405
- vTable->Skip = MatchFinderMt3_Skip;
839
+ default:
840
+ /* case 4: */
841
+ p->GetHeadsFunc = p->MatchFinder->bigHash ? GetHeads4b : GetHeads4;
842
+ p->MixMatchesFunc = (Mf_Mix_Matches)MixMatches3;
843
+ vTable->Skip = (Mf_Skip_Func)MatchFinderMt3_Skip;
1406
844
  break;
845
+ /*
1407
846
  default:
1408
- p->GetHeadsFunc = MF(p)->bigHash ? GetHeads5b : GetHeads5;
1409
- p->MixMatchesFunc = MixMatches4;
1410
- vTable->Skip =
1411
- MatchFinderMt3_Skip;
1412
- // MatchFinderMt4_Skip;
847
+ p->GetHeadsFunc = GetHeads5;
848
+ p->MixMatchesFunc = (Mf_Mix_Matches)MixMatches4;
849
+ vTable->Skip = (Mf_Skip_Func)MatchFinderMt4_Skip;
1413
850
  break;
851
+ */
1414
852
  }
1415
853
  }
1416
-
1417
- #undef RINOK_THREAD
1418
- #undef PRF
1419
- #undef MF
1420
- #undef GetUi24hi_from32
1421
- #undef LOCK_BUFFER
1422
- #undef UNLOCK_BUFFER