Index: third_party/brotli/enc/write_bits.h |
diff --git a/third_party/brotli/enc/write_bits.h b/third_party/brotli/enc/write_bits.h |
index b605203a3614167de75e516169f90f444eb1da86..3999c917806ec23baa8fddcde0f7cf7ee6b10dee 100644 |
--- a/third_party/brotli/enc/write_bits.h |
+++ b/third_party/brotli/enc/write_bits.h |
@@ -4,74 +4,78 @@ |
See file LICENSE for detail or copy at https://opensource.org/licenses/MIT |
*/ |
-// Write bits into a byte array. |
+/* Write bits into a byte array. */ |
#ifndef BROTLI_ENC_WRITE_BITS_H_ |
#define BROTLI_ENC_WRITE_BITS_H_ |
#include <assert.h> |
-#include <stdio.h> |
+#include <stdio.h> /* printf */ |
+#include <brotli/types.h> |
#include "./port.h" |
-#include "./types.h" |
- |
-namespace brotli { |
- |
-//#define BIT_WRITER_DEBUG |
- |
-// This function writes bits into bytes in increasing addresses, and within |
-// a byte least-significant-bit first. |
-// |
-// The function can write up to 56 bits in one go with WriteBits |
-// Example: let's assume that 3 bits (Rs below) have been written already: |
-// |
-// BYTE-0 BYTE+1 BYTE+2 |
-// |
-// 0000 0RRR 0000 0000 0000 0000 |
-// |
-// Now, we could write 5 or less bits in MSB by just sifting by 3 |
-// and OR'ing to BYTE-0. |
-// |
-// For n bits, we take the last 5 bits, OR that with high bits in BYTE-0, |
-// and locate the rest in BYTE+1, BYTE+2, etc. |
-inline void WriteBits(size_t n_bits, |
- uint64_t bits, |
- size_t * __restrict pos, |
- uint8_t * __restrict array) { |
+ |
+#if defined(__cplusplus) || defined(c_plusplus) |
+extern "C" { |
+#endif |
+ |
+/*#define BIT_WRITER_DEBUG */ |
+ |
+/* This function writes bits into bytes in increasing addresses, and within |
+ a byte least-significant-bit first. |
+ |
+ The function can write up to 56 bits in one go with WriteBits |
+ Example: let's assume that 3 bits (Rs below) have been written already: |
+ |
+ BYTE-0 BYTE+1 BYTE+2 |
+ |
+ 0000 0RRR 0000 0000 0000 0000 |
+ |
+ Now, we could write 5 or less bits in MSB by just sifting by 3 |
+ and OR'ing to BYTE-0. |
+ |
+ For n bits, we take the last 5 bits, OR that with high bits in BYTE-0, |
+ and locate the rest in BYTE+1, BYTE+2, etc. */ |
+static BROTLI_INLINE void BrotliWriteBits(size_t n_bits, |
+ uint64_t bits, |
+ size_t * BROTLI_RESTRICT pos, |
+ uint8_t * BROTLI_RESTRICT array) { |
+#ifdef IS_LITTLE_ENDIAN |
+ /* This branch of the code can write up to 56 bits at a time, |
+ 7 bits are lost by being perhaps already in *p and at least |
+ 1 bit is needed to initialize the bit-stream ahead (i.e. if 7 |
+ bits are in *p and we write 57 bits, then the next write will |
+ access a byte that was never initialized). */ |
+ uint8_t *p = &array[*pos >> 3]; |
+ uint64_t v = *p; |
#ifdef BIT_WRITER_DEBUG |
printf("WriteBits %2d 0x%016llx %10d\n", n_bits, bits, *pos); |
#endif |
assert((bits >> n_bits) == 0); |
assert(n_bits <= 56); |
-#ifdef IS_LITTLE_ENDIAN |
- // This branch of the code can write up to 56 bits at a time, |
- // 7 bits are lost by being perhaps already in *p and at least |
- // 1 bit is needed to initialize the bit-stream ahead (i.e. if 7 |
- // bits are in *p and we write 57 bits, then the next write will |
- // access a byte that was never initialized). |
- uint8_t *p = &array[*pos >> 3]; |
- uint64_t v = *p; |
v |= bits << (*pos & 7); |
- BROTLI_UNALIGNED_STORE64(p, v); // Set some bits. |
+ BROTLI_UNALIGNED_STORE64(p, v); /* Set some bits. */ |
*pos += n_bits; |
#else |
- // implicit & 0xff is assumed for uint8_t arithmetics |
+ /* implicit & 0xff is assumed for uint8_t arithmetics */ |
uint8_t *array_pos = &array[*pos >> 3]; |
const size_t bits_reserved_in_first_byte = (*pos & 7); |
+ size_t bits_left_to_write; |
bits <<= bits_reserved_in_first_byte; |
- *array_pos++ |= static_cast<uint8_t>(bits); |
- for (size_t bits_left_to_write = n_bits + bits_reserved_in_first_byte; |
+ *array_pos++ |= (uint8_t)bits; |
+ for (bits_left_to_write = n_bits + bits_reserved_in_first_byte; |
bits_left_to_write >= 9; |
bits_left_to_write -= 8) { |
bits >>= 8; |
- *array_pos++ = static_cast<uint8_t>(bits); |
+ *array_pos++ = (uint8_t)bits; |
} |
*array_pos = 0; |
*pos += n_bits; |
#endif |
} |
-inline void WriteBitsPrepareStorage(size_t pos, uint8_t *array) { |
+static BROTLI_INLINE void BrotliWriteBitsPrepareStorage( |
+ size_t pos, uint8_t *array) { |
#ifdef BIT_WRITER_DEBUG |
printf("WriteBitsPrepareStorage %10d\n", pos); |
#endif |
@@ -79,6 +83,8 @@ inline void WriteBitsPrepareStorage(size_t pos, uint8_t *array) { |
array[pos >> 3] = 0; |
} |
-} // namespace brotli |
+#if defined(__cplusplus) || defined(c_plusplus) |
+} /* extern "C" */ |
+#endif |
-#endif // BROTLI_ENC_WRITE_BITS_H_ |
+#endif /* BROTLI_ENC_WRITE_BITS_H_ */ |