|
- // Copyright 2011 The LevelDB-Go Authors. All rights reserved.
- //
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-
- package util
-
- import (
- "hash/crc32"
- )
-
- var table = crc32.MakeTable(crc32.Castagnoli)
-
- // CRC is a CRC-32 checksum computed using Castagnoli's polynomial.
- type CRC uint32
-
- // NewCRC creates a new crc based on the given bytes.
- func NewCRC(b []byte) CRC {
- return CRC(0).Update(b)
- }
-
- // Update updates the crc with the given bytes.
- func (c CRC) Update(b []byte) CRC {
- return CRC(crc32.Update(uint32(c), table, b))
- }
-
- // Value returns a masked crc.
- func (c CRC) Value() uint32 {
- return uint32(c>>15|c<<17) + 0xa282ead8
- }
|