Lines Matching refs:extension
230 func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error {
236 if a, b := reflect.TypeOf(pbi), reflect.TypeOf(extension.ExtendedType); a != b {
240 if !isExtensionField(pb, extension.Field) {
283 func HasExtension(pb Message, extension *ExtensionDesc) bool {
294 _, ok := extmap[extension.Field]
300 func ClearExtension(pb Message, extension *ExtensionDesc) {
307 delete(extmap, extension.Field)
319 func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) {
325 if extension.ExtendedType != nil {
327 if err := checkExtensionTypes(epb, extension); err != nil {
334 return defaultExtensionValue(extension)
338 e, ok := emap[extension.Field]
342 return defaultExtensionValue(extension)
347 if e.desc != extension {
356 if extension.ExtensionType == nil {
361 v, err := decodeExtension(e.enc, extension)
369 e.desc = extension
371 emap[extension.Field] = e
377 func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) {
378 if extension.ExtensionType == nil {
383 t := reflect.TypeOf(extension.ExtensionType)
384 props := extensionProperties(extension)
416 func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) {
417 t := reflect.TypeOf(extension.ExtensionType)
418 unmarshal := typeUnmarshaler(t, extension.Tag)
497 func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error {
502 if err := checkExtensionTypes(epb, extension); err != nil {
505 typ := reflect.TypeOf(extension.ExtensionType)
507 …return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.Extension…
519 extmap[extension.Field] = Extension{desc: extension, value: extensionAsStorageType(value)}