Lines Matching refs:xi

86 func InitExtensionInfo(xi *ExtensionInfo, xd pref.ExtensionDescriptor, goType reflect.Type) {
87 xi.goType = goType
88 xi.desc = extensionTypeDescriptor{xd, xi}
89 xi.init = extensionInfoDescInit
92 func (xi *ExtensionInfo) New() pref.Value {
93 return xi.lazyInit().New()
95 func (xi *ExtensionInfo) Zero() pref.Value {
96 return xi.lazyInit().Zero()
98 func (xi *ExtensionInfo) ValueOf(v interface{}) pref.Value {
99 return xi.lazyInit().PBValueOf(reflect.ValueOf(v))
101 func (xi *ExtensionInfo) InterfaceOf(v pref.Value) interface{} {
102 return xi.lazyInit().GoValueOf(v).Interface()
104 func (xi *ExtensionInfo) IsValidValue(v pref.Value) bool {
105 return xi.lazyInit().IsValidPB(v)
107 func (xi *ExtensionInfo) IsValidInterface(v interface{}) bool {
108 return xi.lazyInit().IsValidGo(reflect.ValueOf(v))
110 func (xi *ExtensionInfo) TypeDescriptor() pref.ExtensionTypeDescriptor {
111 if atomic.LoadUint32(&xi.init) < extensionInfoDescInit {
112 xi.lazyInitSlow()
114 return &xi.desc
117 func (xi *ExtensionInfo) lazyInit() Converter {
118 if atomic.LoadUint32(&xi.init) < extensionInfoFullInit {
119 xi.lazyInitSlow()
121 return xi.conv
124 func (xi *ExtensionInfo) lazyInitSlow() {
125 xi.mu.Lock()
126 defer xi.mu.Unlock()
128 if xi.init == extensionInfoFullInit {
131 defer atomic.StoreUint32(&xi.init, extensionInfoFullInit)
133 if xi.desc.ExtensionDescriptor == nil {
134 xi.initFromLegacy()
136 if !xi.desc.ExtensionDescriptor.IsPlaceholder() {
137 if xi.ExtensionType == nil {
138 xi.initToLegacy()
140 xi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor)
141 xi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor)
142 xi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType)
148 xi *ExtensionInfo member
152 return xtd.xi