brotli 0.2.0 → 0.2.1

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 (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_ */