Source File
extension.go
Belonging Package
google.golang.org/protobuf/internal/impl
// Copyright 2019 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package implimport ()// ExtensionInfo implements ExtensionType.//// This type contains a number of exported fields for legacy compatibility.// The only non-deprecated use of this type is through the methods of the// ExtensionType interface.type ExtensionInfo struct {// An ExtensionInfo may exist in several stages of initialization.//// extensionInfoUninitialized: Some or all of the legacy exported// fields may be set, but none of the unexported fields have been// initialized. This is the starting state for an ExtensionInfo// in legacy generated code.//// extensionInfoDescInit: The desc field is set, but other unexported fields// may not be initialized. Legacy exported fields may or may not be set.// This is the starting state for an ExtensionInfo in newly generated code.//// extensionInfoFullInit: The ExtensionInfo is fully initialized.// This state is only entered after lazy initialization is complete.init uint32mu sync.MutexgoType reflect.Typedesc extensionTypeDescriptorconv Converterinfo *extensionFieldInfo // for fast-path method implementations// ExtendedType is a typed nil-pointer to the parent message type that// is being extended. It is possible for this to be unpopulated in v2// since the message may no longer implement the MessageV1 interface.//// Deprecated: Use the ExtendedType method instead.ExtendedType protoiface.MessageV1// ExtensionType is the zero value of the extension type.//// For historical reasons, reflect.TypeOf(ExtensionType) and the// type returned by InterfaceOf may not be identical.//// Deprecated: Use InterfaceOf(xt.Zero()) instead.ExtensionType any// Field is the field number of the extension.//// Deprecated: Use the Descriptor().Number method instead.Field int32// Name is the fully qualified name of extension.//// Deprecated: Use the Descriptor().FullName method instead.Name string// Tag is the protobuf struct tag used in the v1 API.//// Deprecated: Do not use.Tag string// Filename is the proto filename in which the extension is defined.//// Deprecated: Use Descriptor().ParentFile().Path() instead.Filename string}// Stages of initialization: See the ExtensionInfo.init field.const (extensionInfoUninitialized = 0extensionInfoDescInit = 1extensionInfoFullInit = 2)func ( *ExtensionInfo, protoreflect.ExtensionDescriptor, reflect.Type) {.goType =.desc = extensionTypeDescriptor{, }.init = extensionInfoDescInit}func ( *ExtensionInfo) () protoreflect.Value {return .lazyInit().New()}func ( *ExtensionInfo) () protoreflect.Value {return .lazyInit().Zero()}func ( *ExtensionInfo) ( any) protoreflect.Value {return .lazyInit().PBValueOf(reflect.ValueOf())}func ( *ExtensionInfo) ( protoreflect.Value) any {return .lazyInit().GoValueOf().Interface()}func ( *ExtensionInfo) ( protoreflect.Value) bool {return .lazyInit().IsValidPB()}func ( *ExtensionInfo) ( any) bool {return .lazyInit().IsValidGo(reflect.ValueOf())}func ( *ExtensionInfo) () protoreflect.ExtensionTypeDescriptor {if atomic.LoadUint32(&.init) < extensionInfoDescInit {.lazyInitSlow()}return &.desc}func ( *ExtensionInfo) () Converter {if atomic.LoadUint32(&.init) < extensionInfoFullInit {.lazyInitSlow()}return .conv}func ( *ExtensionInfo) () {.mu.Lock()defer .mu.Unlock()if .init == extensionInfoFullInit {return}defer atomic.StoreUint32(&.init, extensionInfoFullInit)if .desc.ExtensionDescriptor == nil {.initFromLegacy()}if !.desc.ExtensionDescriptor.IsPlaceholder() {if .ExtensionType == nil {.initToLegacy()}.conv = NewConverter(.goType, .desc.ExtensionDescriptor).info = makeExtensionFieldInfo(.desc.ExtensionDescriptor).info.validation = newValidationInfo(.desc.ExtensionDescriptor, .goType)}}type extensionTypeDescriptor struct {protoreflect.ExtensionDescriptorxi *ExtensionInfo}func ( *extensionTypeDescriptor) () protoreflect.ExtensionType {return .xi}func ( *extensionTypeDescriptor) () protoreflect.ExtensionDescriptor {return .ExtensionDescriptor}
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64)