OSDN Git Service

fix commands
[bytom/shuttle.git] / vendor / github.com / bytom / vendor / github.com / syndtr / goleveldb / leveldb / util / crc32.go
diff --git a/vendor/github.com/bytom/vendor/github.com/syndtr/goleveldb/leveldb/util/crc32.go b/vendor/github.com/bytom/vendor/github.com/syndtr/goleveldb/leveldb/util/crc32.go
new file mode 100644 (file)
index 0000000..631c9d6
--- /dev/null
@@ -0,0 +1,30 @@
+// 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
+}