|
|
@@ -66,7 +66,7 @@ func (f field) IsValid() bool { return f != nil }
|
|
|
// instead of reflect to implement the same (but faster) interface.
|
|
|
type pointer struct {
|
|
|
v reflect.Value
|
|
|
- }
|
|
|
+}
|
|
|
|
|
|
// toPointer converts an interface of pointer type to a pointer
|
|
|
// that points to the same target.
|
|
|
@@ -107,7 +107,7 @@ func grow(s reflect.Value) reflect.Value {
|
|
|
s.SetLen(n + 1)
|
|
|
} else {
|
|
|
s.Set(reflect.Append(s, reflect.Zero(s.Type().Elem())))
|
|
|
-}
|
|
|
+ }
|
|
|
return s.Index(n)
|
|
|
}
|
|
|
|
|
|
@@ -141,7 +141,7 @@ func (p pointer) getInt32Ptr() *int32 {
|
|
|
if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
|
|
|
// raw int32 type
|
|
|
return p.v.Elem().Interface().(*int32)
|
|
|
-}
|
|
|
+ }
|
|
|
// an enum
|
|
|
return p.v.Elem().Convert(int32PtrType).Interface().(*int32)
|
|
|
}
|
|
|
@@ -159,7 +159,7 @@ func (p pointer) getInt32Slice() []int32 {
|
|
|
if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
|
|
|
// raw int32 type
|
|
|
return p.v.Elem().Interface().([]int32)
|
|
|
-}
|
|
|
+ }
|
|
|
// an enum
|
|
|
// Allocate a []int32, then assign []enum's values into it.
|
|
|
// Note: we can't convert []enum to []int32.
|
|
|
@@ -167,7 +167,7 @@ func (p pointer) getInt32Slice() []int32 {
|
|
|
s := make([]int32, slice.Len())
|
|
|
for i := 0; i < slice.Len(); i++ {
|
|
|
s[i] = int32(slice.Index(i).Int())
|
|
|
-}
|
|
|
+ }
|
|
|
return s
|
|
|
}
|
|
|
|
|
|
@@ -178,23 +178,23 @@ func (p pointer) setInt32Slice(v []int32) {
|
|
|
// raw int32 type
|
|
|
p.v.Elem().Set(reflect.ValueOf(v))
|
|
|
return
|
|
|
- }
|
|
|
+ }
|
|
|
// an enum
|
|
|
// Allocate a []enum, then assign []int32's values into it.
|
|
|
// Note: we can't convert []enum to []int32.
|
|
|
slice := reflect.MakeSlice(p.v.Type().Elem(), len(v), cap(v))
|
|
|
for i, x := range v {
|
|
|
slice.Index(i).SetInt(int64(x))
|
|
|
- }
|
|
|
- p.v.Elem().Set(slice)
|
|
|
}
|
|
|
+ p.v.Elem().Set(slice)
|
|
|
+}
|
|
|
func (p pointer) appendInt32Slice(v int32) {
|
|
|
grow(p.v.Elem()).SetInt(int64(v))
|
|
|
}
|
|
|
|
|
|
func (p pointer) toUint64() *uint64 {
|
|
|
return p.v.Interface().(*uint64)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toUint64Ptr() **uint64 {
|
|
|
return p.v.Interface().(**uint64)
|
|
|
}
|
|
|
@@ -206,13 +206,13 @@ func (p pointer) toUint32() *uint32 {
|
|
|
}
|
|
|
func (p pointer) toUint32Ptr() **uint32 {
|
|
|
return p.v.Interface().(**uint32)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toUint32Slice() *[]uint32 {
|
|
|
return p.v.Interface().(*[]uint32)
|
|
|
}
|
|
|
func (p pointer) toBool() *bool {
|
|
|
return p.v.Interface().(*bool)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toBoolPtr() **bool {
|
|
|
return p.v.Interface().(**bool)
|
|
|
}
|
|
|
@@ -224,10 +224,10 @@ func (p pointer) toFloat64() *float64 {
|
|
|
}
|
|
|
func (p pointer) toFloat64Ptr() **float64 {
|
|
|
return p.v.Interface().(**float64)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toFloat64Slice() *[]float64 {
|
|
|
return p.v.Interface().(*[]float64)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toFloat32() *float32 {
|
|
|
return p.v.Interface().(*float32)
|
|
|
}
|
|
|
@@ -236,7 +236,7 @@ func (p pointer) toFloat32Ptr() **float32 {
|
|
|
}
|
|
|
func (p pointer) toFloat32Slice() *[]float32 {
|
|
|
return p.v.Interface().(*[]float32)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toString() *string {
|
|
|
return p.v.Interface().(*string)
|
|
|
}
|
|
|
@@ -248,16 +248,16 @@ func (p pointer) toStringSlice() *[]string {
|
|
|
}
|
|
|
func (p pointer) toBytes() *[]byte {
|
|
|
return p.v.Interface().(*[]byte)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toBytesSlice() *[][]byte {
|
|
|
return p.v.Interface().(*[][]byte)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toExtensions() *XXX_InternalExtensions {
|
|
|
return p.v.Interface().(*XXX_InternalExtensions)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) toOldExtensions() *map[int32]Extension {
|
|
|
return p.v.Interface().(*map[int32]Extension)
|
|
|
- }
|
|
|
+}
|
|
|
func (p pointer) getPointer() pointer {
|
|
|
return pointer{v: p.v.Elem()}
|
|
|
}
|
|
|
@@ -278,7 +278,7 @@ func (p pointer) getPointerSlice() []pointer {
|
|
|
s := make([]pointer, n)
|
|
|
for i := 0; i < n; i++ {
|
|
|
s[i] = pointer{v: p.v.Elem().Index(i)}
|
|
|
-}
|
|
|
+ }
|
|
|
return s
|
|
|
}
|
|
|
|
|
|
@@ -314,12 +314,12 @@ func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
|
|
|
atomicLock.Lock()
|
|
|
defer atomicLock.Unlock()
|
|
|
return *p
|
|
|
- }
|
|
|
+}
|
|
|
func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
|
|
|
atomicLock.Lock()
|
|
|
defer atomicLock.Unlock()
|
|
|
*p = v
|
|
|
- }
|
|
|
+}
|
|
|
func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
|
|
|
atomicLock.Lock()
|
|
|
defer atomicLock.Unlock()
|
|
|
@@ -334,7 +334,7 @@ func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
|
|
|
atomicLock.Lock()
|
|
|
defer atomicLock.Unlock()
|
|
|
return *p
|
|
|
- }
|
|
|
+}
|
|
|
func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
|
|
|
atomicLock.Lock()
|
|
|
defer atomicLock.Unlock()
|