OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / vendor / github.com / gxed / hashland / murmur3 / murmur32.go
diff --git a/vendor/github.com/gxed/hashland/murmur3/murmur32.go b/vendor/github.com/gxed/hashland/murmur3/murmur32.go
deleted file mode 100644 (file)
index bc89d26..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-package murmur3
-
-// http://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/hash/Murmur3_32HashFunction.java
-
-import (
-       "hash"
-       "unsafe"
-)
-
-// Make sure interfaces are correctly implemented.
-var (
-       _ hash.Hash   = new(digest32)
-       _ hash.Hash32 = new(digest32)
-)
-
-const (
-       c1_32 uint32 = 0xcc9e2d51
-       c2_32 uint32 = 0x1b873593
-)
-
-// digest32 represents a partial evaluation of a 32 bites hash.
-type digest32 struct {
-       digest
-       h1 uint32 // Unfinalized running hash.
-}
-
-func New32() hash.Hash32 {
-       d := new(digest32)
-       d.bmixer = d
-       d.Reset()
-       return d
-}
-
-func (d *digest32) Size() int { return 4 }
-
-func (d *digest32) reset() { d.h1 = 0 }
-
-func (d *digest32) Sum(b []byte) []byte {
-       h := d.h1
-       return append(b, byte(h>>24), byte(h>>16), byte(h>>8), byte(h))
-}
-
-// Digest as many blocks as possible.
-func (d *digest32) bmix(p []byte) (tail []byte) {
-       h1 := d.h1
-
-       nblocks := len(p) / 4
-       for i := 0; i < nblocks; i++ {
-               k1 := *(*uint32)(unsafe.Pointer(&p[i*4]))
-
-               k1 *= c1_32
-               k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15)
-               k1 *= c2_32
-
-               h1 ^= k1
-               h1 = (h1 << 13) | (h1 >> 19) // rotl32(h1, 13)
-               h1 = h1*5 + 0xe6546b64
-       }
-       d.h1 = h1
-       return p[nblocks*d.Size():]
-}
-
-func (d *digest32) Sum32() (h1 uint32) {
-
-       h1 = d.h1
-
-       var k1 uint32
-       switch len(d.tail) & 3 {
-       case 3:
-               k1 ^= uint32(d.tail[2]) << 16
-               fallthrough
-       case 2:
-               k1 ^= uint32(d.tail[1]) << 8
-               fallthrough
-       case 1:
-               k1 ^= uint32(d.tail[0])
-               k1 *= c1_32
-               k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15)
-               k1 *= c2_32
-               h1 ^= k1
-       }
-
-       h1 ^= uint32(d.clen)
-
-       h1 ^= h1 >> 16
-       h1 *= 0x85ebca6b
-       h1 ^= h1 >> 13
-       h1 *= 0xc2b2ae35
-       h1 ^= h1 >> 16
-
-       return h1
-}
-
-/*
-func rotl32(x uint32, r byte) uint32 {
-       return (x << r) | (x >> (32 - r))
-}
-*/
-
-// Sum32 returns the MurmurHash3 sum of data. It is equivalent to the
-// following sequence (without the extra burden and the extra allocation):
-//     hasher := New32()
-//     hasher.Write(data)
-//     return hasher.Sum32()
-func Sum32(data []byte) uint32 {
-
-       var h1 uint32 = 0
-
-       nblocks := len(data) / 4
-       var p uintptr
-       if len(data) > 0 {
-               p = uintptr(unsafe.Pointer(&data[0]))
-       }
-       p1 := p + uintptr(4*nblocks)
-       for ; p < p1; p += 4 {
-               k1 := *(*uint32)(unsafe.Pointer(p))
-
-               k1 *= c1_32
-               k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15)
-               k1 *= c2_32
-
-               h1 ^= k1
-               h1 = (h1 << 13) | (h1 >> 19) // rotl32(h1, 13)
-               h1 = h1*5 + 0xe6546b64
-       }
-
-       tail := data[nblocks*4:]
-
-       var k1 uint32
-       switch len(tail) & 3 {
-       case 3:
-               k1 ^= uint32(tail[2]) << 16
-               fallthrough
-       case 2:
-               k1 ^= uint32(tail[1]) << 8
-               fallthrough
-       case 1:
-               k1 ^= uint32(tail[0])
-               k1 *= c1_32
-               k1 = (k1 << 15) | (k1 >> 17) // rotl32(k1, 15)
-               k1 *= c2_32
-               h1 ^= k1
-       }
-
-       h1 ^= uint32(len(data))
-
-       h1 ^= h1 >> 16
-       h1 *= 0x85ebca6b
-       h1 ^= h1 >> 13
-       h1 *= 0xc2b2ae35
-       h1 ^= h1 >> 16
-
-       return h1
-}