MCPcopy Create free account
hub / github.com/egonelbre/exp / NewPointerMap

Function NewPointerMap

reflectmap/reflect_pointer.go:21–53  ·  view source on GitHub ↗
(key, value interface{})

Source from the content-addressed store, hash-verified

19}
20
21func NewPointerMap(key, value interface{}) *PointerMap {
22 keyType := reflect.TypeOf(key)
23 valueType := reflect.TypeOf(value)
24 bucketCount := 128
25
26 bucketType := reflect.StructOf([]reflect.StructField{
27 reflect.StructField{
28 Name: "Hash",
29 Type: reflect.TypeOf(hashBucket{}),
30 },
31 reflect.StructField{
32 Name: "Key",
33 Type: reflect.ArrayOf(bucketSize, keyType),
34 },
35 reflect.StructField{
36 Name: "Value",
37 Type: reflect.ArrayOf(bucketSize, valueType),
38 },
39 })
40
41 buckets := reflect.New(reflect.ArrayOf(bucketCount, bucketType))
42 return &PointerMap{
43 keyType: keyType,
44 valueType: valueType,
45 bucketType: bucketType,
46
47 tempKey: reflect.NewAt(keyType, nil),
48 tempValue: reflect.NewAt(valueType, nil),
49
50 bucketCount: bucketCount,
51 buckets: buckets,
52 }
53}
54
55func (m *PointerMap) Add(key, value unsafe.Pointer) {
56 // hack to avoid figuring out a hash function

Callers 2

TestReflectPointerFunction · 0.85
BenchmarkReflectPointerFunction · 0.85

Calls

no outgoing calls

Tested by 2

TestReflectPointerFunction · 0.68
BenchmarkReflectPointerFunction · 0.68