brotli 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +1 -0
  3. data/Rakefile +6 -1
  4. data/brotli.gemspec +1 -1
  5. data/docs/Brotli.html +485 -0
  6. data/docs/Brotli/Error.html +124 -0
  7. data/docs/_index.html +122 -0
  8. data/docs/class_list.html +51 -0
  9. data/docs/css/common.css +1 -0
  10. data/docs/css/full_list.css +58 -0
  11. data/docs/css/style.css +496 -0
  12. data/docs/file.README.html +127 -0
  13. data/docs/file_list.html +56 -0
  14. data/docs/frames.html +17 -0
  15. data/docs/index.html +127 -0
  16. data/docs/js/app.js +292 -0
  17. data/docs/js/full_list.js +216 -0
  18. data/docs/js/jquery.js +4 -0
  19. data/docs/method_list.html +67 -0
  20. data/docs/top-level-namespace.html +110 -0
  21. data/ext/brotli/brotli.c +20 -0
  22. data/lib/brotli/version.rb +1 -1
  23. data/vendor/brotli/c/common/constants.h +13 -6
  24. data/vendor/brotli/c/{dec → common}/context.h +182 -172
  25. data/vendor/brotli/c/common/dictionary.bin +0 -0
  26. data/vendor/brotli/c/common/dictionary.bin.br +0 -0
  27. data/vendor/brotli/c/common/dictionary.c +1 -1
  28. data/vendor/brotli/c/common/dictionary.h +4 -4
  29. data/vendor/brotli/c/common/platform.h +509 -0
  30. data/vendor/brotli/c/common/transform.c +235 -0
  31. data/vendor/brotli/c/common/transform.h +80 -0
  32. data/vendor/brotli/c/common/version.h +8 -1
  33. data/vendor/brotli/c/dec/bit_reader.c +1 -1
  34. data/vendor/brotli/c/dec/bit_reader.h +35 -86
  35. data/vendor/brotli/c/dec/decode.c +322 -205
  36. data/vendor/brotli/c/dec/huffman.c +35 -37
  37. data/vendor/brotli/c/dec/huffman.h +13 -9
  38. data/vendor/brotli/c/dec/prefix.h +3 -4
  39. data/vendor/brotli/c/dec/state.c +26 -34
  40. data/vendor/brotli/c/dec/state.h +34 -23
  41. data/vendor/brotli/c/enc/backward_references.c +25 -15
  42. data/vendor/brotli/c/enc/backward_references.h +5 -6
  43. data/vendor/brotli/c/enc/backward_references_hq.c +94 -68
  44. data/vendor/brotli/c/enc/backward_references_hq.h +22 -25
  45. data/vendor/brotli/c/enc/backward_references_inc.h +10 -10
  46. data/vendor/brotli/c/enc/bit_cost.c +1 -1
  47. data/vendor/brotli/c/enc/bit_cost.h +5 -5
  48. data/vendor/brotli/c/enc/block_encoder_inc.h +7 -6
  49. data/vendor/brotli/c/enc/block_splitter.c +2 -3
  50. data/vendor/brotli/c/enc/block_splitter.h +1 -1
  51. data/vendor/brotli/c/enc/block_splitter_inc.h +11 -11
  52. data/vendor/brotli/c/enc/brotli_bit_stream.c +102 -101
  53. data/vendor/brotli/c/enc/brotli_bit_stream.h +19 -38
  54. data/vendor/brotli/c/enc/cluster.c +1 -1
  55. data/vendor/brotli/c/enc/cluster.h +1 -1
  56. data/vendor/brotli/c/enc/command.h +40 -30
  57. data/vendor/brotli/c/enc/compress_fragment.c +21 -22
  58. data/vendor/brotli/c/enc/compress_fragment.h +1 -1
  59. data/vendor/brotli/c/enc/compress_fragment_two_pass.c +101 -68
  60. data/vendor/brotli/c/enc/compress_fragment_two_pass.h +1 -1
  61. data/vendor/brotli/c/enc/dictionary_hash.c +1 -1
  62. data/vendor/brotli/c/enc/encode.c +262 -162
  63. data/vendor/brotli/c/enc/encoder_dict.c +32 -0
  64. data/vendor/brotli/c/enc/encoder_dict.h +41 -0
  65. data/vendor/brotli/c/enc/entropy_encode.c +14 -14
  66. data/vendor/brotli/c/enc/entropy_encode.h +5 -5
  67. data/vendor/brotli/c/enc/entropy_encode_static.h +3 -3
  68. data/vendor/brotli/c/enc/fast_log.h +4 -2
  69. data/vendor/brotli/c/enc/find_match_length.h +3 -3
  70. data/vendor/brotli/c/enc/hash.h +75 -24
  71. data/vendor/brotli/c/enc/hash_composite_inc.h +133 -0
  72. data/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +9 -8
  73. data/vendor/brotli/c/enc/hash_longest_match64_inc.h +8 -8
  74. data/vendor/brotli/c/enc/hash_longest_match_inc.h +8 -8
  75. data/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +10 -9
  76. data/vendor/brotli/c/enc/hash_rolling_inc.h +215 -0
  77. data/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +9 -8
  78. data/vendor/brotli/c/enc/histogram.c +9 -6
  79. data/vendor/brotli/c/enc/histogram.h +6 -3
  80. data/vendor/brotli/c/enc/histogram_inc.h +1 -1
  81. data/vendor/brotli/c/enc/literal_cost.c +5 -5
  82. data/vendor/brotli/c/enc/literal_cost.h +2 -2
  83. data/vendor/brotli/c/enc/memory.c +5 -16
  84. data/vendor/brotli/c/enc/memory.h +40 -1
  85. data/vendor/brotli/c/enc/metablock.c +163 -25
  86. data/vendor/brotli/c/enc/metablock.h +13 -8
  87. data/vendor/brotli/c/enc/metablock_inc.h +1 -1
  88. data/vendor/brotli/c/enc/params.h +44 -0
  89. data/vendor/brotli/c/enc/prefix.h +3 -4
  90. data/vendor/brotli/c/enc/quality.h +29 -24
  91. data/vendor/brotli/c/enc/ringbuffer.h +15 -11
  92. data/vendor/brotli/c/enc/static_dict.c +49 -45
  93. data/vendor/brotli/c/enc/static_dict.h +4 -3
  94. data/vendor/brotli/c/enc/static_dict_lut.h +1 -1
  95. data/vendor/brotli/c/enc/utf8_util.c +20 -20
  96. data/vendor/brotli/c/enc/utf8_util.h +1 -1
  97. data/vendor/brotli/c/enc/write_bits.h +16 -21
  98. data/vendor/brotli/c/include/brotli/decode.h +13 -8
  99. data/vendor/brotli/c/include/brotli/encode.h +33 -8
  100. data/vendor/brotli/c/include/brotli/port.h +211 -83
  101. data/vendor/brotli/c/include/brotli/types.h +0 -7
  102. metadata +33 -12
  103. data/vendor/brotli/c/dec/port.h +0 -168
  104. data/vendor/brotli/c/dec/transform.h +0 -300
  105. data/vendor/brotli/c/enc/context.h +0 -184
  106. data/vendor/brotli/c/enc/port.h +0 -184
@@ -80,11 +80,4 @@ typedef void* (*brotli_alloc_func)(void* opaque, size_t size);
80
80
  */
81
81
  typedef void (*brotli_free_func)(void* opaque, void* address);
82
82
 
83
- #if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
84
- !defined(__cplusplus) && !defined(__PGI)
85
- #define BROTLI_ARRAY_PARAM(L) L
86
- #else
87
- #define BROTLI_ARRAY_PARAM(L)
88
- #endif
89
-
90
83
  #endif /* BROTLI_COMMON_TYPES_H_ */
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brotli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - miyucy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-21 00:00:00.000000000 Z
11
+ date: 2018-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake-compiler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -99,6 +99,22 @@ files:
99
99
  - bin/console
100
100
  - bin/setup
101
101
  - brotli.gemspec
102
+ - docs/Brotli.html
103
+ - docs/Brotli/Error.html
104
+ - docs/_index.html
105
+ - docs/class_list.html
106
+ - docs/css/common.css
107
+ - docs/css/full_list.css
108
+ - docs/css/style.css
109
+ - docs/file.README.html
110
+ - docs/file_list.html
111
+ - docs/frames.html
112
+ - docs/index.html
113
+ - docs/js/app.js
114
+ - docs/js/full_list.js
115
+ - docs/js/jquery.js
116
+ - docs/method_list.html
117
+ - docs/top-level-namespace.html
102
118
  - ext/brotli/brotli.c
103
119
  - ext/brotli/brotli.h
104
120
  - ext/brotli/buffer.c
@@ -112,21 +128,23 @@ files:
112
128
  - spec/spec_helper.rb
113
129
  - vendor/brotli/LICENSE
114
130
  - vendor/brotli/c/common/constants.h
131
+ - vendor/brotli/c/common/context.h
115
132
  - vendor/brotli/c/common/dictionary.bin
133
+ - vendor/brotli/c/common/dictionary.bin.br
116
134
  - vendor/brotli/c/common/dictionary.c
117
135
  - vendor/brotli/c/common/dictionary.h
136
+ - vendor/brotli/c/common/platform.h
137
+ - vendor/brotli/c/common/transform.c
138
+ - vendor/brotli/c/common/transform.h
118
139
  - vendor/brotli/c/common/version.h
119
140
  - vendor/brotli/c/dec/bit_reader.c
120
141
  - vendor/brotli/c/dec/bit_reader.h
121
- - vendor/brotli/c/dec/context.h
122
142
  - vendor/brotli/c/dec/decode.c
123
143
  - vendor/brotli/c/dec/huffman.c
124
144
  - vendor/brotli/c/dec/huffman.h
125
- - vendor/brotli/c/dec/port.h
126
145
  - vendor/brotli/c/dec/prefix.h
127
146
  - vendor/brotli/c/dec/state.c
128
147
  - vendor/brotli/c/dec/state.h
129
- - vendor/brotli/c/dec/transform.h
130
148
  - vendor/brotli/c/enc/backward_references.c
131
149
  - vendor/brotli/c/enc/backward_references.h
132
150
  - vendor/brotli/c/enc/backward_references_hq.c
@@ -149,20 +167,23 @@ files:
149
167
  - vendor/brotli/c/enc/compress_fragment.h
150
168
  - vendor/brotli/c/enc/compress_fragment_two_pass.c
151
169
  - vendor/brotli/c/enc/compress_fragment_two_pass.h
152
- - vendor/brotli/c/enc/context.h
153
170
  - vendor/brotli/c/enc/dictionary_hash.c
154
171
  - vendor/brotli/c/enc/dictionary_hash.h
155
172
  - vendor/brotli/c/enc/encode.c
173
+ - vendor/brotli/c/enc/encoder_dict.c
174
+ - vendor/brotli/c/enc/encoder_dict.h
156
175
  - vendor/brotli/c/enc/entropy_encode.c
157
176
  - vendor/brotli/c/enc/entropy_encode.h
158
177
  - vendor/brotli/c/enc/entropy_encode_static.h
159
178
  - vendor/brotli/c/enc/fast_log.h
160
179
  - vendor/brotli/c/enc/find_match_length.h
161
180
  - vendor/brotli/c/enc/hash.h
181
+ - vendor/brotli/c/enc/hash_composite_inc.h
162
182
  - vendor/brotli/c/enc/hash_forgetful_chain_inc.h
163
183
  - vendor/brotli/c/enc/hash_longest_match64_inc.h
164
184
  - vendor/brotli/c/enc/hash_longest_match_inc.h
165
185
  - vendor/brotli/c/enc/hash_longest_match_quickly_inc.h
186
+ - vendor/brotli/c/enc/hash_rolling_inc.h
166
187
  - vendor/brotli/c/enc/hash_to_binary_tree_inc.h
167
188
  - vendor/brotli/c/enc/histogram.c
168
189
  - vendor/brotli/c/enc/histogram.h
@@ -174,7 +195,7 @@ files:
174
195
  - vendor/brotli/c/enc/metablock.c
175
196
  - vendor/brotli/c/enc/metablock.h
176
197
  - vendor/brotli/c/enc/metablock_inc.h
177
- - vendor/brotli/c/enc/port.h
198
+ - vendor/brotli/c/enc/params.h
178
199
  - vendor/brotli/c/enc/prefix.h
179
200
  - vendor/brotli/c/enc/quality.h
180
201
  - vendor/brotli/c/enc/ringbuffer.h
@@ -208,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
229
  version: '0'
209
230
  requirements: []
210
231
  rubyforge_project:
211
- rubygems_version: 2.6.14
232
+ rubygems_version: 2.7.6
212
233
  signing_key:
213
234
  specification_version: 4
214
235
  summary: Brotli compressor/decompressor
@@ -1,168 +0,0 @@
1
- /* Copyright 2015 Google Inc. All Rights Reserved.
2
-
3
- Distributed under MIT license.
4
- See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
- */
6
-
7
- /* Macros for compiler / platform specific features and build options.
8
-
9
- Build options are:
10
- * BROTLI_BUILD_32_BIT disables 64-bit optimizations
11
- * BROTLI_BUILD_64_BIT forces to use 64-bit optimizations
12
- * BROTLI_BUILD_BIG_ENDIAN forces to use big-endian optimizations
13
- * BROTLI_BUILD_ENDIAN_NEUTRAL disables endian-aware optimizations
14
- * BROTLI_BUILD_LITTLE_ENDIAN forces to use little-endian optimizations
15
- * BROTLI_BUILD_MODERN_COMPILER forces to use modern compilers built-ins,
16
- features and attributes
17
- * BROTLI_BUILD_PORTABLE disables dangerous optimizations, like unaligned
18
- read and overlapping memcpy; this reduces decompression speed by 5%
19
- * BROTLI_BUILD_NO_RBIT disables "rbit" optimization for ARM CPUs
20
- * BROTLI_DEBUG dumps file name and line number when decoder detects stream
21
- or memory error
22
- * BROTLI_ENABLE_LOG enables asserts and dumps various state information
23
- */
24
-
25
- #ifndef BROTLI_DEC_PORT_H_
26
- #define BROTLI_DEC_PORT_H_
27
-
28
- #if defined(BROTLI_ENABLE_LOG) || defined(BROTLI_DEBUG)
29
- #include <assert.h>
30
- #include <stdio.h>
31
- #endif
32
-
33
- #include <brotli/port.h>
34
-
35
- #if defined(__arm__) || defined(__thumb__) || \
36
- defined(_M_ARM) || defined(_M_ARMT) || defined(__ARM64_ARCH_8__)
37
- #define BROTLI_TARGET_ARM
38
- #if (defined(__ARM_ARCH) && (__ARM_ARCH == 7)) || \
39
- (defined(M_ARM) && (M_ARM == 7))
40
- #define BROTLI_TARGET_ARMV7
41
- #endif /* ARMv7 */
42
- #if defined(__aarch64__) || defined(__ARM64_ARCH_8__)
43
- #define BROTLI_TARGET_ARMV8
44
- #endif /* ARMv8 */
45
- #endif /* ARM */
46
-
47
- #if defined(__i386) || defined(_M_IX86)
48
- #define BROTLI_TARGET_X86
49
- #endif
50
-
51
- #if defined(__x86_64__) || defined(_M_X64)
52
- #define BROTLI_TARGET_X64
53
- #endif
54
-
55
- #if defined(__PPC64__)
56
- #define BROTLI_TARGET_POWERPC64
57
- #endif
58
-
59
- #ifdef BROTLI_BUILD_PORTABLE
60
- #define BROTLI_ALIGNED_READ (!!1)
61
- #elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \
62
- defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8)
63
- /* Allow unaligned read only for white-listed CPUs. */
64
- #define BROTLI_ALIGNED_READ (!!0)
65
- #else
66
- #define BROTLI_ALIGNED_READ (!!1)
67
- #endif
68
-
69
- /* IS_CONSTANT macros returns true for compile-time constant expressions. */
70
- #if BROTLI_MODERN_COMPILER || __has_builtin(__builtin_constant_p)
71
- #define IS_CONSTANT(x) (!!__builtin_constant_p(x))
72
- #else
73
- #define IS_CONSTANT(x) (!!0)
74
- #endif
75
-
76
- #ifdef BROTLI_ENABLE_LOG
77
- #define BROTLI_DCHECK(x) assert(x)
78
- #define BROTLI_LOG(x) printf x
79
- #else
80
- #define BROTLI_DCHECK(x)
81
- #define BROTLI_LOG(x)
82
- #endif
83
-
84
- #if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)
85
- static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* fn) {
86
- fprintf(stderr, "%s:%d (%s)\n", f, l, fn);
87
- fflush(stderr);
88
- }
89
- #define BROTLI_DUMP() BrotliDump(__FILE__, __LINE__, __FUNCTION__)
90
- #else
91
- #define BROTLI_DUMP() (void)(0)
92
- #endif
93
-
94
- #if defined(BROTLI_BUILD_64_BIT)
95
- #define BROTLI_64_BITS 1
96
- #elif defined(BROTLI_BUILD_32_BIT)
97
- #define BROTLI_64_BITS 0
98
- #elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8) || \
99
- defined(BROTLI_TARGET_POWERPC64)
100
- #define BROTLI_64_BITS 1
101
- #else
102
- #define BROTLI_64_BITS 0
103
- #endif
104
-
105
- #if (BROTLI_64_BITS)
106
- #define reg_t uint64_t
107
- #else
108
- #define reg_t uint32_t
109
- #endif
110
-
111
- #if defined(BROTLI_BUILD_BIG_ENDIAN)
112
- #define BROTLI_LITTLE_ENDIAN 0
113
- #define BROTLI_BIG_ENDIAN 1
114
- #elif defined(BROTLI_BUILD_LITTLE_ENDIAN)
115
- #define BROTLI_LITTLE_ENDIAN 1
116
- #define BROTLI_BIG_ENDIAN 0
117
- #elif defined(BROTLI_BUILD_ENDIAN_NEUTRAL)
118
- #define BROTLI_LITTLE_ENDIAN 0
119
- #define BROTLI_BIG_ENDIAN 0
120
- #elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
121
- #define BROTLI_LITTLE_ENDIAN 1
122
- #define BROTLI_BIG_ENDIAN 0
123
- #elif defined(_WIN32)
124
- /* Win32 can currently always be assumed to be little endian */
125
- #define BROTLI_LITTLE_ENDIAN 1
126
- #define BROTLI_BIG_ENDIAN 0
127
- #else
128
- #if (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__))
129
- #define BROTLI_BIG_ENDIAN 1
130
- #else
131
- #define BROTLI_BIG_ENDIAN 0
132
- #endif
133
- #define BROTLI_LITTLE_ENDIAN 0
134
- #endif
135
-
136
- #define BROTLI_REPEAT(N, X) { \
137
- if ((N & 1) != 0) {X;} \
138
- if ((N & 2) != 0) {X; X;} \
139
- if ((N & 4) != 0) {X; X; X; X;} \
140
- }
141
-
142
- #if (BROTLI_MODERN_COMPILER || defined(__llvm__)) && \
143
- !defined(BROTLI_BUILD_NO_RBIT)
144
- #if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8)
145
- /* TODO: detect ARMv6T2 and enable this code for it. */
146
- static BROTLI_INLINE reg_t BrotliRBit(reg_t input) {
147
- reg_t output;
148
- __asm__("rbit %0, %1\n" : "=r"(output) : "r"(input));
149
- return output;
150
- }
151
- #define BROTLI_RBIT(x) BrotliRBit(x)
152
- #endif /* armv7 */
153
- #endif /* gcc || clang */
154
-
155
- #if defined(BROTLI_TARGET_ARM)
156
- #define BROTLI_HAS_UBFX (!!1)
157
- #else
158
- #define BROTLI_HAS_UBFX (!!0)
159
- #endif
160
-
161
- #define BROTLI_ALLOC(S, L) S->alloc_func(S->memory_manager_opaque, L)
162
-
163
- #define BROTLI_FREE(S, X) { \
164
- S->free_func(S->memory_manager_opaque, X); \
165
- X = NULL; \
166
- }
167
-
168
- #endif /* BROTLI_DEC_PORT_H_ */
@@ -1,300 +0,0 @@
1
- /* Copyright 2013 Google Inc. All Rights Reserved.
2
-
3
- Distributed under MIT license.
4
- See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
5
- */
6
-
7
- /* Transformations on dictionary words. */
8
-
9
- #ifndef BROTLI_DEC_TRANSFORM_H_
10
- #define BROTLI_DEC_TRANSFORM_H_
11
-
12
- #include <brotli/types.h>
13
- #include "./port.h"
14
-
15
- #if defined(__cplusplus) || defined(c_plusplus)
16
- extern "C" {
17
- #endif
18
-
19
- enum WordTransformType {
20
- kIdentity = 0,
21
- kOmitLast1 = 1,
22
- kOmitLast2 = 2,
23
- kOmitLast3 = 3,
24
- kOmitLast4 = 4,
25
- kOmitLast5 = 5,
26
- kOmitLast6 = 6,
27
- kOmitLast7 = 7,
28
- kOmitLast8 = 8,
29
- kOmitLast9 = 9,
30
- kUppercaseFirst = 10,
31
- kUppercaseAll = 11,
32
- kOmitFirst1 = 12,
33
- kOmitFirst2 = 13,
34
- kOmitFirst3 = 14,
35
- kOmitFirst4 = 15,
36
- kOmitFirst5 = 16,
37
- kOmitFirst6 = 17,
38
- kOmitFirst7 = 18,
39
- kOmitFirst8 = 19,
40
- kOmitFirst9 = 20
41
- };
42
-
43
- typedef struct {
44
- const uint8_t prefix_id;
45
- const uint8_t transform;
46
- const uint8_t suffix_id;
47
- } Transform;
48
-
49
- static const char kPrefixSuffix[208] =
50
- "\0 \0, \0 of the \0 of \0s \0.\0 and \0 in \0\"\0 to \0\">\0\n\0. \0]\0"
51
- " for \0 a \0 that \0\'\0 with \0 from \0 by \0(\0. The \0 on \0 as \0"
52
- " is \0ing \0\n\t\0:\0ed \0=\"\0 at \0ly \0,\0=\'\0.com/\0. This \0"
53
- " not \0er \0al \0ful \0ive \0less \0est \0ize \0\xc2\xa0\0ous ";
54
-
55
- enum {
56
- /* EMPTY = ""
57
- SP = " "
58
- DQUOT = "\""
59
- SQUOT = "'"
60
- CLOSEBR = "]"
61
- OPEN = "("
62
- SLASH = "/"
63
- NBSP = non-breaking space "\0xc2\xa0"
64
- */
65
- kPFix_EMPTY = 0,
66
- kPFix_SP = 1,
67
- kPFix_COMMASP = 3,
68
- kPFix_SPofSPtheSP = 6,
69
- kPFix_SPtheSP = 9,
70
- kPFix_eSP = 12,
71
- kPFix_SPofSP = 15,
72
- kPFix_sSP = 20,
73
- kPFix_DOT = 23,
74
- kPFix_SPandSP = 25,
75
- kPFix_SPinSP = 31,
76
- kPFix_DQUOT = 36,
77
- kPFix_SPtoSP = 38,
78
- kPFix_DQUOTGT = 43,
79
- kPFix_NEWLINE = 46,
80
- kPFix_DOTSP = 48,
81
- kPFix_CLOSEBR = 51,
82
- kPFix_SPforSP = 53,
83
- kPFix_SPaSP = 59,
84
- kPFix_SPthatSP = 63,
85
- kPFix_SQUOT = 70,
86
- kPFix_SPwithSP = 72,
87
- kPFix_SPfromSP = 79,
88
- kPFix_SPbySP = 86,
89
- kPFix_OPEN = 91,
90
- kPFix_DOTSPTheSP = 93,
91
- kPFix_SPonSP = 100,
92
- kPFix_SPasSP = 105,
93
- kPFix_SPisSP = 110,
94
- kPFix_ingSP = 115,
95
- kPFix_NEWLINETAB = 120,
96
- kPFix_COLON = 123,
97
- kPFix_edSP = 125,
98
- kPFix_EQDQUOT = 129,
99
- kPFix_SPatSP = 132,
100
- kPFix_lySP = 137,
101
- kPFix_COMMA = 141,
102
- kPFix_EQSQUOT = 143,
103
- kPFix_DOTcomSLASH = 146,
104
- kPFix_DOTSPThisSP = 152,
105
- kPFix_SPnotSP = 160,
106
- kPFix_erSP = 166,
107
- kPFix_alSP = 170,
108
- kPFix_fulSP = 174,
109
- kPFix_iveSP = 179,
110
- kPFix_lessSP = 184,
111
- kPFix_estSP = 190,
112
- kPFix_izeSP = 195,
113
- kPFix_NBSP = 200,
114
- kPFix_ousSP = 203
115
- };
116
-
117
- static const Transform kTransforms[] = {
118
- { kPFix_EMPTY, kIdentity, kPFix_EMPTY },
119
- { kPFix_EMPTY, kIdentity, kPFix_SP },
120
- { kPFix_SP, kIdentity, kPFix_SP },
121
- { kPFix_EMPTY, kOmitFirst1, kPFix_EMPTY },
122
- { kPFix_EMPTY, kUppercaseFirst, kPFix_SP },
123
- { kPFix_EMPTY, kIdentity, kPFix_SPtheSP },
124
- { kPFix_SP, kIdentity, kPFix_EMPTY },
125
- { kPFix_sSP, kIdentity, kPFix_SP },
126
- { kPFix_EMPTY, kIdentity, kPFix_SPofSP },
127
- { kPFix_EMPTY, kUppercaseFirst, kPFix_EMPTY },
128
- { kPFix_EMPTY, kIdentity, kPFix_SPandSP },
129
- { kPFix_EMPTY, kOmitFirst2, kPFix_EMPTY },
130
- { kPFix_EMPTY, kOmitLast1, kPFix_EMPTY },
131
- { kPFix_COMMASP, kIdentity, kPFix_SP },
132
- { kPFix_EMPTY, kIdentity, kPFix_COMMASP },
133
- { kPFix_SP, kUppercaseFirst, kPFix_SP },
134
- { kPFix_EMPTY, kIdentity, kPFix_SPinSP },
135
- { kPFix_EMPTY, kIdentity, kPFix_SPtoSP },
136
- { kPFix_eSP, kIdentity, kPFix_SP },
137
- { kPFix_EMPTY, kIdentity, kPFix_DQUOT },
138
- { kPFix_EMPTY, kIdentity, kPFix_DOT },
139
- { kPFix_EMPTY, kIdentity, kPFix_DQUOTGT },
140
- { kPFix_EMPTY, kIdentity, kPFix_NEWLINE },
141
- { kPFix_EMPTY, kOmitLast3, kPFix_EMPTY },
142
- { kPFix_EMPTY, kIdentity, kPFix_CLOSEBR },
143
- { kPFix_EMPTY, kIdentity, kPFix_SPforSP },
144
- { kPFix_EMPTY, kOmitFirst3, kPFix_EMPTY },
145
- { kPFix_EMPTY, kOmitLast2, kPFix_EMPTY },
146
- { kPFix_EMPTY, kIdentity, kPFix_SPaSP },
147
- { kPFix_EMPTY, kIdentity, kPFix_SPthatSP },
148
- { kPFix_SP, kUppercaseFirst, kPFix_EMPTY },
149
- { kPFix_EMPTY, kIdentity, kPFix_DOTSP },
150
- { kPFix_DOT, kIdentity, kPFix_EMPTY },
151
- { kPFix_SP, kIdentity, kPFix_COMMASP },
152
- { kPFix_EMPTY, kOmitFirst4, kPFix_EMPTY },
153
- { kPFix_EMPTY, kIdentity, kPFix_SPwithSP },
154
- { kPFix_EMPTY, kIdentity, kPFix_SQUOT },
155
- { kPFix_EMPTY, kIdentity, kPFix_SPfromSP },
156
- { kPFix_EMPTY, kIdentity, kPFix_SPbySP },
157
- { kPFix_EMPTY, kOmitFirst5, kPFix_EMPTY },
158
- { kPFix_EMPTY, kOmitFirst6, kPFix_EMPTY },
159
- { kPFix_SPtheSP, kIdentity, kPFix_EMPTY },
160
- { kPFix_EMPTY, kOmitLast4, kPFix_EMPTY },
161
- { kPFix_EMPTY, kIdentity, kPFix_DOTSPTheSP },
162
- { kPFix_EMPTY, kUppercaseAll, kPFix_EMPTY },
163
- { kPFix_EMPTY, kIdentity, kPFix_SPonSP },
164
- { kPFix_EMPTY, kIdentity, kPFix_SPasSP },
165
- { kPFix_EMPTY, kIdentity, kPFix_SPisSP },
166
- { kPFix_EMPTY, kOmitLast7, kPFix_EMPTY },
167
- { kPFix_EMPTY, kOmitLast1, kPFix_ingSP },
168
- { kPFix_EMPTY, kIdentity, kPFix_NEWLINETAB },
169
- { kPFix_EMPTY, kIdentity, kPFix_COLON },
170
- { kPFix_SP, kIdentity, kPFix_DOTSP },
171
- { kPFix_EMPTY, kIdentity, kPFix_edSP },
172
- { kPFix_EMPTY, kOmitFirst9, kPFix_EMPTY },
173
- { kPFix_EMPTY, kOmitFirst7, kPFix_EMPTY },
174
- { kPFix_EMPTY, kOmitLast6, kPFix_EMPTY },
175
- { kPFix_EMPTY, kIdentity, kPFix_OPEN },
176
- { kPFix_EMPTY, kUppercaseFirst, kPFix_COMMASP },
177
- { kPFix_EMPTY, kOmitLast8, kPFix_EMPTY },
178
- { kPFix_EMPTY, kIdentity, kPFix_SPatSP },
179
- { kPFix_EMPTY, kIdentity, kPFix_lySP },
180
- { kPFix_SPtheSP, kIdentity, kPFix_SPofSP },
181
- { kPFix_EMPTY, kOmitLast5, kPFix_EMPTY },
182
- { kPFix_EMPTY, kOmitLast9, kPFix_EMPTY },
183
- { kPFix_SP, kUppercaseFirst, kPFix_COMMASP },
184
- { kPFix_EMPTY, kUppercaseFirst, kPFix_DQUOT },
185
- { kPFix_DOT, kIdentity, kPFix_OPEN },
186
- { kPFix_EMPTY, kUppercaseAll, kPFix_SP },
187
- { kPFix_EMPTY, kUppercaseFirst, kPFix_DQUOTGT },
188
- { kPFix_EMPTY, kIdentity, kPFix_EQDQUOT },
189
- { kPFix_SP, kIdentity, kPFix_DOT },
190
- { kPFix_DOTcomSLASH, kIdentity, kPFix_EMPTY },
191
- { kPFix_SPtheSP, kIdentity, kPFix_SPofSPtheSP },
192
- { kPFix_EMPTY, kUppercaseFirst, kPFix_SQUOT },
193
- { kPFix_EMPTY, kIdentity, kPFix_DOTSPThisSP },
194
- { kPFix_EMPTY, kIdentity, kPFix_COMMA },
195
- { kPFix_DOT, kIdentity, kPFix_SP },
196
- { kPFix_EMPTY, kUppercaseFirst, kPFix_OPEN },
197
- { kPFix_EMPTY, kUppercaseFirst, kPFix_DOT },
198
- { kPFix_EMPTY, kIdentity, kPFix_SPnotSP },
199
- { kPFix_SP, kIdentity, kPFix_EQDQUOT },
200
- { kPFix_EMPTY, kIdentity, kPFix_erSP },
201
- { kPFix_SP, kUppercaseAll, kPFix_SP },
202
- { kPFix_EMPTY, kIdentity, kPFix_alSP },
203
- { kPFix_SP, kUppercaseAll, kPFix_EMPTY },
204
- { kPFix_EMPTY, kIdentity, kPFix_EQSQUOT },
205
- { kPFix_EMPTY, kUppercaseAll, kPFix_DQUOT },
206
- { kPFix_EMPTY, kUppercaseFirst, kPFix_DOTSP },
207
- { kPFix_SP, kIdentity, kPFix_OPEN },
208
- { kPFix_EMPTY, kIdentity, kPFix_fulSP },
209
- { kPFix_SP, kUppercaseFirst, kPFix_DOTSP },
210
- { kPFix_EMPTY, kIdentity, kPFix_iveSP },
211
- { kPFix_EMPTY, kIdentity, kPFix_lessSP },
212
- { kPFix_EMPTY, kUppercaseAll, kPFix_SQUOT },
213
- { kPFix_EMPTY, kIdentity, kPFix_estSP },
214
- { kPFix_SP, kUppercaseFirst, kPFix_DOT },
215
- { kPFix_EMPTY, kUppercaseAll, kPFix_DQUOTGT },
216
- { kPFix_SP, kIdentity, kPFix_EQSQUOT },
217
- { kPFix_EMPTY, kUppercaseFirst, kPFix_COMMA },
218
- { kPFix_EMPTY, kIdentity, kPFix_izeSP },
219
- { kPFix_EMPTY, kUppercaseAll, kPFix_DOT },
220
- { kPFix_NBSP, kIdentity, kPFix_EMPTY },
221
- { kPFix_SP, kIdentity, kPFix_COMMA },
222
- { kPFix_EMPTY, kUppercaseFirst, kPFix_EQDQUOT },
223
- { kPFix_EMPTY, kUppercaseAll, kPFix_EQDQUOT },
224
- { kPFix_EMPTY, kIdentity, kPFix_ousSP },
225
- { kPFix_EMPTY, kUppercaseAll, kPFix_COMMASP },
226
- { kPFix_EMPTY, kUppercaseFirst, kPFix_EQSQUOT },
227
- { kPFix_SP, kUppercaseFirst, kPFix_COMMA },
228
- { kPFix_SP, kUppercaseAll, kPFix_EQDQUOT },
229
- { kPFix_SP, kUppercaseAll, kPFix_COMMASP },
230
- { kPFix_EMPTY, kUppercaseAll, kPFix_COMMA },
231
- { kPFix_EMPTY, kUppercaseAll, kPFix_OPEN },
232
- { kPFix_EMPTY, kUppercaseAll, kPFix_DOTSP },
233
- { kPFix_SP, kUppercaseAll, kPFix_DOT },
234
- { kPFix_EMPTY, kUppercaseAll, kPFix_EQSQUOT },
235
- { kPFix_SP, kUppercaseAll, kPFix_DOTSP },
236
- { kPFix_SP, kUppercaseFirst, kPFix_EQDQUOT },
237
- { kPFix_SP, kUppercaseAll, kPFix_EQSQUOT },
238
- { kPFix_SP, kUppercaseFirst, kPFix_EQSQUOT },
239
- };
240
-
241
- static const int kNumTransforms = sizeof(kTransforms) / sizeof(kTransforms[0]);
242
-
243
- static int ToUpperCase(uint8_t* p) {
244
- if (p[0] < 0xc0) {
245
- if (p[0] >= 'a' && p[0] <= 'z') {
246
- p[0] ^= 32;
247
- }
248
- return 1;
249
- }
250
- /* An overly simplified uppercasing model for UTF-8. */
251
- if (p[0] < 0xe0) {
252
- p[1] ^= 32;
253
- return 2;
254
- }
255
- /* An arbitrary transform for three byte characters. */
256
- p[2] ^= 5;
257
- return 3;
258
- }
259
-
260
- static BROTLI_NOINLINE int TransformDictionaryWord(
261
- uint8_t* dst, const uint8_t* word, int len, int transform) {
262
- int idx = 0;
263
- {
264
- const char* prefix = &kPrefixSuffix[kTransforms[transform].prefix_id];
265
- while (*prefix) { dst[idx++] = (uint8_t)*prefix++; }
266
- }
267
- {
268
- const int t = kTransforms[transform].transform;
269
- int i = 0;
270
- int skip = t - (kOmitFirst1 - 1);
271
- if (skip > 0) {
272
- word += skip;
273
- len -= skip;
274
- } else if (t <= kOmitLast9) {
275
- len -= t;
276
- }
277
- while (i < len) { dst[idx++] = word[i++]; }
278
- if (t == kUppercaseFirst) {
279
- ToUpperCase(&dst[idx - len]);
280
- } else if (t == kUppercaseAll) {
281
- uint8_t* uppercase = &dst[idx - len];
282
- while (len > 0) {
283
- int step = ToUpperCase(uppercase);
284
- uppercase += step;
285
- len -= step;
286
- }
287
- }
288
- }
289
- {
290
- const char* suffix = &kPrefixSuffix[kTransforms[transform].suffix_id];
291
- while (*suffix) { dst[idx++] = (uint8_t)*suffix++; }
292
- return idx;
293
- }
294
- }
295
-
296
- #if defined(__cplusplus) || defined(c_plusplus)
297
- } /* extern "C" */
298
- #endif
299
-
300
- #endif /* BROTLI_DEC_TRANSFORM_H_ */