source: code/trunk/vendor/github.com/andybalholm/brotli/prefix.go@ 145

Last change on this file since 145 was 145, checked in by Izuru Yakumo, 22 months ago

Updated the Makefile and vendored depedencies

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 1.3 KB
Line 
1package brotli
2
3/* Copyright 2013 Google Inc. All Rights Reserved.
4
5 Distributed under MIT license.
6 See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
7*/
8
9/* Functions for encoding of integers into prefix codes the amount of extra
10 bits, and the actual values of the extra bits. */
11
12/* Here distance_code is an intermediate code, i.e. one of the special codes or
13 the actual distance increased by BROTLI_NUM_DISTANCE_SHORT_CODES - 1. */
14func prefixEncodeCopyDistance(distance_code uint, num_direct_codes uint, postfix_bits uint, code *uint16, extra_bits *uint32) {
15 if distance_code < numDistanceShortCodes+num_direct_codes {
16 *code = uint16(distance_code)
17 *extra_bits = 0
18 return
19 } else {
20 var dist uint = (uint(1) << (postfix_bits + 2)) + (distance_code - numDistanceShortCodes - num_direct_codes)
21 var bucket uint = uint(log2FloorNonZero(dist) - 1)
22 var postfix_mask uint = (1 << postfix_bits) - 1
23 var postfix uint = dist & postfix_mask
24 var prefix uint = (dist >> bucket) & 1
25 var offset uint = (2 + prefix) << bucket
26 var nbits uint = bucket - postfix_bits
27 *code = uint16(nbits<<10 | (numDistanceShortCodes + num_direct_codes + ((2*(nbits-1) + prefix) << postfix_bits) + postfix))
28 *extra_bits = uint32((dist - offset) >> postfix_bits)
29 }
30}
Note: See TracBrowser for help on using the repository browser.