isomorfeus-ferret 0.17.2 → 0.17.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/ext/isomorfeus_ferret_ext/benchmark.c +9 -20
  3. data/ext/isomorfeus_ferret_ext/benchmarks_all.h +1 -2
  4. data/ext/isomorfeus_ferret_ext/bm_hash.c +1 -2
  5. data/ext/isomorfeus_ferret_ext/brotli_dec_decode.c +4 -2
  6. data/ext/isomorfeus_ferret_ext/brotli_enc_encode.c +3 -2
  7. data/ext/isomorfeus_ferret_ext/frb_analysis.c +4 -5
  8. data/ext/isomorfeus_ferret_ext/frb_field_info.c +3 -4
  9. data/ext/isomorfeus_ferret_ext/frb_index.c +118 -125
  10. data/ext/isomorfeus_ferret_ext/frb_lazy_doc.c +14 -16
  11. data/ext/isomorfeus_ferret_ext/frb_search.c +31 -23
  12. data/ext/isomorfeus_ferret_ext/frb_store.c +27 -13
  13. data/ext/isomorfeus_ferret_ext/frb_utils.c +3 -6
  14. data/ext/isomorfeus_ferret_ext/frt_analysis.c +39 -46
  15. data/ext/isomorfeus_ferret_ext/frt_analysis.h +9 -9
  16. data/ext/isomorfeus_ferret_ext/frt_array.c +11 -22
  17. data/ext/isomorfeus_ferret_ext/frt_bitvector.h +3 -6
  18. data/ext/isomorfeus_ferret_ext/frt_doc_field.c +87 -0
  19. data/ext/isomorfeus_ferret_ext/frt_doc_field.h +26 -0
  20. data/ext/isomorfeus_ferret_ext/frt_document.c +4 -97
  21. data/ext/isomorfeus_ferret_ext/frt_document.h +2 -27
  22. data/ext/isomorfeus_ferret_ext/frt_except.c +8 -6
  23. data/ext/isomorfeus_ferret_ext/frt_except.h +1 -2
  24. data/ext/isomorfeus_ferret_ext/frt_field_index.c +13 -32
  25. data/ext/isomorfeus_ferret_ext/frt_field_index.h +0 -6
  26. data/ext/isomorfeus_ferret_ext/frt_field_info.c +69 -0
  27. data/ext/isomorfeus_ferret_ext/frt_field_info.h +49 -0
  28. data/ext/isomorfeus_ferret_ext/frt_field_infos.c +196 -0
  29. data/ext/isomorfeus_ferret_ext/frt_field_infos.h +35 -0
  30. data/ext/isomorfeus_ferret_ext/frt_global.c +10 -4
  31. data/ext/isomorfeus_ferret_ext/frt_global.h +11 -15
  32. data/ext/isomorfeus_ferret_ext/frt_hash.c +8 -8
  33. data/ext/isomorfeus_ferret_ext/frt_hash.h +1 -2
  34. data/ext/isomorfeus_ferret_ext/frt_hashset.c +20 -40
  35. data/ext/isomorfeus_ferret_ext/frt_hashset.h +1 -2
  36. data/ext/isomorfeus_ferret_ext/frt_helper.c +7 -15
  37. data/ext/isomorfeus_ferret_ext/frt_in_stream.c +35 -45
  38. data/ext/isomorfeus_ferret_ext/frt_in_stream.h +3 -2
  39. data/ext/isomorfeus_ferret_ext/frt_ind.c +20 -38
  40. data/ext/isomorfeus_ferret_ext/frt_index.c +292 -790
  41. data/ext/isomorfeus_ferret_ext/frt_index.h +1 -102
  42. data/ext/isomorfeus_ferret_ext/frt_lang.c +5 -10
  43. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.c +3 -3
  44. data/ext/isomorfeus_ferret_ext/frt_lazy_doc.h +1 -1
  45. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.c +18 -25
  46. data/ext/isomorfeus_ferret_ext/frt_lazy_doc_field.h +5 -5
  47. data/ext/isomorfeus_ferret_ext/frt_mdbx_store.c +102 -70
  48. data/ext/isomorfeus_ferret_ext/frt_mempool.c +8 -16
  49. data/ext/isomorfeus_ferret_ext/frt_multimapper.c +23 -46
  50. data/ext/isomorfeus_ferret_ext/frt_multimapper.h +4 -8
  51. data/ext/isomorfeus_ferret_ext/frt_out_stream.c +31 -43
  52. data/ext/isomorfeus_ferret_ext/frt_out_stream.h +2 -2
  53. data/ext/isomorfeus_ferret_ext/frt_posh.c +6 -819
  54. data/ext/isomorfeus_ferret_ext/frt_posh.h +0 -57
  55. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.c +11 -22
  56. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.h +1 -2
  57. data/ext/isomorfeus_ferret_ext/frt_q_boolean.c +85 -171
  58. data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +8 -16
  59. data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +1 -2
  60. data/ext/isomorfeus_ferret_ext/frt_q_parser.c +49 -98
  61. data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +52 -104
  62. data/ext/isomorfeus_ferret_ext/frt_q_range.c +6 -12
  63. data/ext/isomorfeus_ferret_ext/frt_q_span.c +113 -226
  64. data/ext/isomorfeus_ferret_ext/frt_q_wildcard.c +1 -2
  65. data/ext/isomorfeus_ferret_ext/frt_ram_store.c +134 -85
  66. data/ext/isomorfeus_ferret_ext/frt_search.c +82 -164
  67. data/ext/isomorfeus_ferret_ext/frt_similarity.c +11 -22
  68. data/ext/isomorfeus_ferret_ext/frt_similarity.h +1 -2
  69. data/ext/isomorfeus_ferret_ext/frt_store.c +13 -25
  70. data/ext/isomorfeus_ferret_ext/frt_store.h +86 -52
  71. data/ext/isomorfeus_ferret_ext/frt_term_vectors.c +8 -16
  72. data/ext/isomorfeus_ferret_ext/frt_win32.h +5 -10
  73. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +12 -11
  74. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.h +11 -13
  75. data/ext/isomorfeus_ferret_ext/lz4.c +422 -195
  76. data/ext/isomorfeus_ferret_ext/lz4.h +114 -46
  77. data/ext/isomorfeus_ferret_ext/lz4frame.c +421 -242
  78. data/ext/isomorfeus_ferret_ext/lz4frame.h +122 -53
  79. data/ext/isomorfeus_ferret_ext/lz4hc.c +127 -111
  80. data/ext/isomorfeus_ferret_ext/lz4hc.h +14 -14
  81. data/ext/isomorfeus_ferret_ext/lz4xxhash.h +1 -1
  82. data/ext/isomorfeus_ferret_ext/mdbx.c +3762 -2526
  83. data/ext/isomorfeus_ferret_ext/mdbx.h +115 -70
  84. data/ext/isomorfeus_ferret_ext/test.c +40 -87
  85. data/ext/isomorfeus_ferret_ext/test.h +3 -6
  86. data/ext/isomorfeus_ferret_ext/test_1710.c +11 -13
  87. data/ext/isomorfeus_ferret_ext/test_analysis.c +32 -64
  88. data/ext/isomorfeus_ferret_ext/test_array.c +6 -12
  89. data/ext/isomorfeus_ferret_ext/test_bitvector.c +12 -24
  90. data/ext/isomorfeus_ferret_ext/test_document.c +23 -33
  91. data/ext/isomorfeus_ferret_ext/test_except.c +10 -21
  92. data/ext/isomorfeus_ferret_ext/test_fields.c +62 -68
  93. data/ext/isomorfeus_ferret_ext/test_file_deleter.c +15 -23
  94. data/ext/isomorfeus_ferret_ext/test_filter.c +17 -27
  95. data/ext/isomorfeus_ferret_ext/test_global.c +14 -29
  96. data/ext/isomorfeus_ferret_ext/test_hash.c +19 -38
  97. data/ext/isomorfeus_ferret_ext/test_hashset.c +8 -16
  98. data/ext/isomorfeus_ferret_ext/test_helper.c +4 -8
  99. data/ext/isomorfeus_ferret_ext/test_highlighter.c +16 -28
  100. data/ext/isomorfeus_ferret_ext/test_index.c +277 -487
  101. data/ext/isomorfeus_ferret_ext/test_lang.c +7 -14
  102. data/ext/isomorfeus_ferret_ext/test_mdbx_store.c +2 -5
  103. data/ext/isomorfeus_ferret_ext/test_mempool.c +5 -10
  104. data/ext/isomorfeus_ferret_ext/test_multimapper.c +3 -6
  105. data/ext/isomorfeus_ferret_ext/test_priorityqueue.c +9 -18
  106. data/ext/isomorfeus_ferret_ext/test_q_const_score.c +4 -6
  107. data/ext/isomorfeus_ferret_ext/test_q_filtered.c +3 -4
  108. data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +9 -15
  109. data/ext/isomorfeus_ferret_ext/test_q_parser.c +8 -16
  110. data/ext/isomorfeus_ferret_ext/test_q_span.c +19 -35
  111. data/ext/isomorfeus_ferret_ext/test_ram_store.c +14 -13
  112. data/ext/isomorfeus_ferret_ext/test_search.c +60 -109
  113. data/ext/isomorfeus_ferret_ext/test_segments.c +8 -13
  114. data/ext/isomorfeus_ferret_ext/test_similarity.c +2 -4
  115. data/ext/isomorfeus_ferret_ext/test_sort.c +14 -24
  116. data/ext/isomorfeus_ferret_ext/test_store.c +96 -115
  117. data/ext/isomorfeus_ferret_ext/test_term.c +9 -15
  118. data/ext/isomorfeus_ferret_ext/test_term_vectors.c +9 -14
  119. data/ext/isomorfeus_ferret_ext/test_test.c +4 -8
  120. data/ext/isomorfeus_ferret_ext/test_threading.c +14 -20
  121. data/ext/isomorfeus_ferret_ext/testhelper.c +11 -21
  122. data/ext/isomorfeus_ferret_ext/testhelper.h +1 -1
  123. data/ext/isomorfeus_ferret_ext/tests_all.h +1 -2
  124. data/lib/isomorfeus/ferret/index/index.rb +1 -1
  125. data/lib/isomorfeus/ferret/version.rb +1 -1
  126. metadata +24 -4
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * LZ4 - Fast LZ compression algorithm
3
3
  * Header File
4
- * Copyright (C) 2011-present, Yann Collet.
4
+ * Copyright (C) 2011-2020, Yann Collet.
5
5
 
6
6
  BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
7
7
 
@@ -97,36 +97,77 @@ extern "C" {
97
97
  # define LZ4LIB_API LZ4LIB_VISIBILITY
98
98
  #endif
99
99
 
100
+ /*! LZ4_FREESTANDING :
101
+ * When this macro is set to 1, it enables "freestanding mode" that is
102
+ * suitable for typical freestanding environment which doesn't support
103
+ * standard C library.
104
+ *
105
+ * - LZ4_FREESTANDING is a compile-time switch.
106
+ * - It requires the following macros to be defined:
107
+ * LZ4_memcpy, LZ4_memmove, LZ4_memset.
108
+ * - It only enables LZ4/HC functions which don't use heap.
109
+ * All LZ4F_* functions are not supported.
110
+ * - See tests/freestanding.c to check its basic setup.
111
+ */
112
+ #if defined(LZ4_FREESTANDING) && (LZ4_FREESTANDING == 1)
113
+ # define LZ4_HEAPMODE 0
114
+ # define LZ4HC_HEAPMODE 0
115
+ # define LZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION 1
116
+ # if !defined(LZ4_memcpy)
117
+ # error "LZ4_FREESTANDING requires macro 'LZ4_memcpy'."
118
+ # endif
119
+ # if !defined(LZ4_memset)
120
+ # error "LZ4_FREESTANDING requires macro 'LZ4_memset'."
121
+ # endif
122
+ # if !defined(LZ4_memmove)
123
+ # error "LZ4_FREESTANDING requires macro 'LZ4_memmove'."
124
+ # endif
125
+ #elif ! defined(LZ4_FREESTANDING)
126
+ # define LZ4_FREESTANDING 0
127
+ #endif
128
+
129
+
100
130
  /*------ Version ------*/
101
131
  #define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */
102
132
  #define LZ4_VERSION_MINOR 9 /* for new (non-breaking) interface capabilities */
103
- #define LZ4_VERSION_RELEASE 3 /* for tweaks, bug-fixes, or development */
133
+ #define LZ4_VERSION_RELEASE 4 /* for tweaks, bug-fixes, or development */
104
134
 
105
135
  #define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE)
106
136
 
107
137
  #define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE
108
138
  #define LZ4_QUOTE(str) #str
109
139
  #define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str)
110
- #define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION)
140
+ #define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) /* requires v1.7.3+ */
111
141
 
112
- LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version */
113
- LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; useful to check dll version */
142
+ LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version; requires v1.3.0+ */
143
+ LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; useful to check dll version; requires v1.7.5+ */
114
144
 
115
145
 
116
146
  /*-************************************
117
147
  * Tuning parameter
118
148
  **************************************/
149
+ #define LZ4_MEMORY_USAGE_MIN 10
150
+ #define LZ4_MEMORY_USAGE_DEFAULT 14
151
+ #define LZ4_MEMORY_USAGE_MAX 20
152
+
119
153
  /*!
120
154
  * LZ4_MEMORY_USAGE :
121
- * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.)
122
- * Increasing memory usage improves compression ratio.
123
- * Reduced memory usage may improve speed, thanks to better cache locality.
155
+ * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; )
156
+ * Increasing memory usage improves compression ratio, at the cost of speed.
157
+ * Reduced memory usage may improve speed at the cost of ratio, thanks to better cache locality.
124
158
  * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache
125
159
  */
126
160
  #ifndef LZ4_MEMORY_USAGE
127
- # define LZ4_MEMORY_USAGE 14
161
+ # define LZ4_MEMORY_USAGE LZ4_MEMORY_USAGE_DEFAULT
128
162
  #endif
129
163
 
164
+ #if (LZ4_MEMORY_USAGE < LZ4_MEMORY_USAGE_MIN)
165
+ # error "LZ4_MEMORY_USAGE is too small !"
166
+ #endif
167
+
168
+ #if (LZ4_MEMORY_USAGE > LZ4_MEMORY_USAGE_MAX)
169
+ # error "LZ4_MEMORY_USAGE is too large !"
170
+ #endif
130
171
 
131
172
  /*-************************************
132
173
  * Simple Functions
@@ -270,8 +311,25 @@ LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcS
270
311
  ***********************************************/
271
312
  typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */
272
313
 
314
+ /**
315
+ Note about RC_INVOKED
316
+
317
+ - RC_INVOKED is predefined symbol of rc.exe (the resource compiler which is part of MSVC/Visual Studio).
318
+ https://docs.microsoft.com/en-us/windows/win32/menurc/predefined-macros
319
+
320
+ - Since rc.exe is a legacy compiler, it truncates long symbol (> 30 chars)
321
+ and reports warning "RC4011: identifier truncated".
322
+
323
+ - To eliminate the warning, we surround long preprocessor symbol with
324
+ "#if !defined(RC_INVOKED) ... #endif" block that means
325
+ "skip this block when rc.exe is trying to read it".
326
+ */
327
+ #if !defined(RC_INVOKED) /* https://docs.microsoft.com/en-us/windows/win32/menurc/predefined-macros */
328
+ #if !defined(LZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION)
273
329
  LZ4LIB_API LZ4_stream_t* LZ4_createStream(void);
274
330
  LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr);
331
+ #endif /* !defined(LZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION) */
332
+ #endif
275
333
 
276
334
  /*! LZ4_resetStream_fast() : v1.9.0+
277
335
  * Use this to prepare an LZ4_stream_t for a new chain of dependent blocks
@@ -355,8 +413,12 @@ typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* tracking context */
355
413
  * creation / destruction of streaming decompression tracking context.
356
414
  * A tracking context can be re-used multiple times.
357
415
  */
416
+ #if !defined(RC_INVOKED) /* https://docs.microsoft.com/en-us/windows/win32/menurc/predefined-macros */
417
+ #if !defined(LZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION)
358
418
  LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void);
359
419
  LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream);
420
+ #endif /* !defined(LZ4_STATIC_LINKING_ONLY_DISABLE_MEMORY_ALLOCATION) */
421
+ #endif
360
422
 
361
423
  /*! LZ4_setStreamDecode() :
362
424
  * An LZ4_streamDecode_t context can be allocated once and re-used multiple times.
@@ -406,7 +468,10 @@ LZ4LIB_API int LZ4_decoderRingBufferSize(int maxBlockSize);
406
468
  * save the last 64KB of decoded data into a safe buffer where it can't be modified during decompression,
407
469
  * then indicate where this data is saved using LZ4_setStreamDecode(), before decompressing next block.
408
470
  */
409
- LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int srcSize, int dstCapacity);
471
+ LZ4LIB_API int
472
+ LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode,
473
+ const char* src, char* dst,
474
+ int srcSize, int dstCapacity);
410
475
 
411
476
 
412
477
  /*! LZ4_decompress_*_usingDict() :
@@ -417,7 +482,16 @@ LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecod
417
482
  * Performance tip : Decompression speed can be substantially increased
418
483
  * when dst == dictStart + dictSize.
419
484
  */
420
- LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int srcSize, int dstCapcity, const char* dictStart, int dictSize);
485
+ LZ4LIB_API int
486
+ LZ4_decompress_safe_usingDict(const char* src, char* dst,
487
+ int srcSize, int dstCapacity,
488
+ const char* dictStart, int dictSize);
489
+
490
+ LZ4LIB_API int
491
+ LZ4_decompress_safe_partial_usingDict(const char* src, char* dst,
492
+ int compressedSize,
493
+ int targetOutputSize, int maxOutputSize,
494
+ const char* dictStart, int dictSize);
421
495
 
422
496
  #endif /* LZ4_H_2983827168210 */
423
497
 
@@ -496,13 +570,15 @@ LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset (void* state, const c
496
570
  * stream (and source buffer) must remain in-place / accessible / unchanged
497
571
  * through the completion of the first compression call on the stream.
498
572
  */
499
- LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream);
573
+ LZ4LIB_STATIC_API void
574
+ LZ4_attach_dictionary(LZ4_stream_t* workingStream,
575
+ const LZ4_stream_t* dictionaryStream);
500
576
 
501
577
 
502
578
  /*! In-place compression and decompression
503
579
  *
504
580
  * It's possible to have input and output sharing the same buffer,
505
- * for highly contrained memory environments.
581
+ * for highly constrained memory environments.
506
582
  * In both cases, it requires input to lay at the end of the buffer,
507
583
  * and decompression to start at beginning of the buffer.
508
584
  * Buffer size must feature some margin, hence be larger than final size.
@@ -592,38 +668,26 @@ LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const
592
668
  typedef unsigned int LZ4_u32;
593
669
  #endif
594
670
 
671
+ /*! LZ4_stream_t :
672
+ * Never ever use below internal definitions directly !
673
+ * These definitions are not API/ABI safe, and may change in future versions.
674
+ * If you need static allocation, declare or allocate an LZ4_stream_t object.
675
+ **/
676
+
595
677
  typedef struct LZ4_stream_t_internal LZ4_stream_t_internal;
596
678
  struct LZ4_stream_t_internal {
597
679
  LZ4_u32 hashTable[LZ4_HASH_SIZE_U32];
598
- LZ4_u32 currentOffset;
599
- LZ4_u32 tableType;
600
680
  const LZ4_byte* dictionary;
601
681
  const LZ4_stream_t_internal* dictCtx;
682
+ LZ4_u32 currentOffset;
683
+ LZ4_u32 tableType;
602
684
  LZ4_u32 dictSize;
685
+ /* Implicit padding to ensure structure is aligned */
603
686
  };
604
687
 
605
- typedef struct {
606
- const LZ4_byte* externalDict;
607
- size_t extDictSize;
608
- const LZ4_byte* prefixEnd;
609
- size_t prefixSize;
610
- } LZ4_streamDecode_t_internal;
611
-
612
-
613
- /*! LZ4_stream_t :
614
- * Do not use below internal definitions directly !
615
- * Declare or allocate an LZ4_stream_t instead.
616
- * LZ4_stream_t can also be created using LZ4_createStream(), which is recommended.
617
- * The structure definition can be convenient for static allocation
618
- * (on stack, or as part of larger structure).
619
- * Init this structure with LZ4_initStream() before first use.
620
- * note : only use this definition in association with static linking !
621
- * this definition is not API/ABI safe, and may change in future versions.
622
- */
623
- #define LZ4_STREAMSIZE 16416 /* static size, for inter-version compatibility */
624
- #define LZ4_STREAMSIZE_VOIDP (LZ4_STREAMSIZE / sizeof(void*))
688
+ #define LZ4_STREAM_MINSIZE ((1UL << LZ4_MEMORY_USAGE) + 32) /* static size, for inter-version compatibility */
625
689
  union LZ4_stream_u {
626
- void* table[LZ4_STREAMSIZE_VOIDP];
690
+ char minStateSize[LZ4_STREAM_MINSIZE];
627
691
  LZ4_stream_t_internal internal_donotuse;
628
692
  }; /* previously typedef'd to LZ4_stream_t */
629
693
 
@@ -641,21 +705,25 @@ union LZ4_stream_u {
641
705
  * In which case, the function will @return NULL.
642
706
  * Note2: An LZ4_stream_t structure guarantees correct alignment and size.
643
707
  * Note3: Before v1.9.0, use LZ4_resetStream() instead
644
- */
708
+ **/
645
709
  LZ4LIB_API LZ4_stream_t* LZ4_initStream (void* buffer, size_t size);
646
710
 
647
711
 
648
712
  /*! LZ4_streamDecode_t :
649
- * information structure to track an LZ4 stream during decompression.
650
- * init this structure using LZ4_setStreamDecode() before first use.
651
- * note : only use in association with static linking !
652
- * this definition is not API/ABI safe,
653
- * and may change in a future version !
654
- */
655
- #define LZ4_STREAMDECODESIZE_U64 (4 + ((sizeof(void*)==16) ? 2 : 0) /*AS-400*/ )
656
- #define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long))
713
+ * Never ever use below internal definitions directly !
714
+ * These definitions are not API/ABI safe, and may change in future versions.
715
+ * If you need static allocation, declare or allocate an LZ4_streamDecode_t object.
716
+ **/
717
+ typedef struct {
718
+ const LZ4_byte* externalDict;
719
+ const LZ4_byte* prefixEnd;
720
+ size_t extDictSize;
721
+ size_t prefixSize;
722
+ } LZ4_streamDecode_t_internal;
723
+
724
+ #define LZ4_STREAMDECODE_MINSIZE 32
657
725
  union LZ4_streamDecode_u {
658
- unsigned long long table[LZ4_STREAMDECODESIZE_U64];
726
+ char minStateSize[LZ4_STREAMDECODE_MINSIZE];
659
727
  LZ4_streamDecode_t_internal internal_donotuse;
660
728
  } ; /* previously typedef'd to LZ4_streamDecode_t */
661
729