MCPcopy Index your code
hub / github.com/upper/db / addToHash

Function addToHash

internal/cache/hash.go:49–109  ·  view source on GitHub ↗
(h uint64, in interface{})

Source from the content-addressed store, hash-verified

47}
48
49func addToHash(h uint64, in interface{}) uint64 {
50 switch v := in.(type) {
51 case uint64:
52 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), v)
53 case uint32:
54 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
55 case uint16:
56 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
57 case uint8:
58 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
59 case uint:
60 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
61 case int64:
62 if v < 0 {
63 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeSignedInt), uint64(-v))
64 } else {
65 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
66 }
67 case int32:
68 if v < 0 {
69 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeSignedInt), uint64(-v))
70 } else {
71 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
72 }
73 case int16:
74 if v < 0 {
75 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeSignedInt), uint64(-v))
76 } else {
77 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
78 }
79 case int8:
80 if v < 0 {
81 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeSignedInt), uint64(-v))
82 } else {
83 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
84 }
85 case int:
86 if v < 0 {
87 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeSignedInt), uint64(-v))
88 } else {
89 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeInt), uint64(v))
90 }
91 case bool:
92 if v {
93 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeBool), 1)
94 } else {
95 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeBool), 2)
96 }
97 case string:
98 return fnv1a.AddString64(fnv1a.AddUint64(h, hashTypeString), v)
99 case Hashable:
100 if in == nil {
101 panic(fmt.Sprintf("could not hash nil element %T", in))
102 }
103 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeHashable), v.Hash())
104 case nil:
105 return fnv1a.AddUint64(fnv1a.AddUint64(h, hashTypeNil), 0)
106 default:

Callers 1

AddToHashFunction · 0.85

Calls 1

HashMethod · 0.65

Tested by

no test coverage detected