Source File
value.go
Belonging Package
google.golang.org/protobuf/reflect/protoreflect
// Copyright 2018 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 protoreflectimport// Enum is a reflection interface for a concrete enum value,// which provides type information and a getter for the enum number.// Enum does not provide a mutable API since enums are commonly backed by// Go constants, which are not addressable.type Enum interface {// Descriptor returns enum descriptor, which contains only the protobuf// type information for the enum.Descriptor() EnumDescriptor// Type returns the enum type, which encapsulates both Go and protobuf// type information. If the Go type information is not needed,// it is recommended that the enum descriptor be used instead.Type() EnumType// Number returns the enum value as an integer.Number() EnumNumber}// Message is a reflective interface for a concrete message value,// encapsulating both type and value information for the message.//// Accessor/mutators for individual fields are keyed by [FieldDescriptor].// For non-extension fields, the descriptor must exactly match the// field known by the parent message.// For extension fields, the descriptor must implement [ExtensionTypeDescriptor],// extend the parent message (i.e., have the same message [FullName]), and// be within the parent's extension range.//// Each field [Value] can be a scalar or a composite type ([Message], [List], or [Map]).// See [Value] for the Go types associated with a [FieldDescriptor].// Providing a [Value] that is invalid or of an incorrect type panics.type Message interface {// Descriptor returns message descriptor, which contains only the protobuf// type information for the message.Descriptor() MessageDescriptor// Type returns the message type, which encapsulates both Go and protobuf// type information. If the Go type information is not needed,// it is recommended that the message descriptor be used instead.Type() MessageType// New returns a newly allocated and mutable empty message.New() Message// Interface unwraps the message reflection interface and// returns the underlying ProtoMessage interface.Interface() ProtoMessage// Range iterates over every populated field in an undefined order,// calling f for each field descriptor and value encountered.// Range returns immediately if f returns false.// While iterating, mutating operations may only be performed// on the current field descriptor.Range(f func(FieldDescriptor, Value) bool)// Has reports whether a field is populated.//// Some fields have the property of nullability where it is possible to// distinguish between the default value of a field and whether the field// was explicitly populated with the default value. Singular message fields,// member fields of a oneof, and proto2 scalar fields are nullable. Such// fields are populated only if explicitly set.//// In other cases (aside from the nullable cases above),// a proto3 scalar field is populated if it contains a non-zero value, and// a repeated field is populated if it is non-empty.Has(FieldDescriptor) bool// Clear clears the field such that a subsequent Has call reports false.//// Clearing an extension field clears both the extension type and value// associated with the given field number.//// Clear is a mutating operation and unsafe for concurrent use.Clear(FieldDescriptor)// Get retrieves the value for a field.//// For unpopulated scalars, it returns the default value, where// the default value of a bytes scalar is guaranteed to be a copy.// For unpopulated composite types, it returns an empty, read-only view// of the value; to obtain a mutable reference, use Mutable.Get(FieldDescriptor) Value// Set stores the value for a field.//// For a field belonging to a oneof, it implicitly clears any other field// that may be currently set within the same oneof.// For extension fields, it implicitly stores the provided ExtensionType.// When setting a composite type, it is unspecified whether the stored value// aliases the source's memory in any way. If the composite value is an// empty, read-only value, then it panics.//// Set is a mutating operation and unsafe for concurrent use.Set(FieldDescriptor, Value)// Mutable returns a mutable reference to a composite type.//// If the field is unpopulated, it may allocate a composite value.// For a field belonging to a oneof, it implicitly clears any other field// that may be currently set within the same oneof.// For extension fields, it implicitly stores the provided ExtensionType// if not already stored.// It panics if the field does not contain a composite type.//// Mutable is a mutating operation and unsafe for concurrent use.Mutable(FieldDescriptor) Value// NewField returns a new value that is assignable to the field// for the given descriptor. For scalars, this returns the default value.// For lists, maps, and messages, this returns a new, empty, mutable value.NewField(FieldDescriptor) Value// WhichOneof reports which field within the oneof is populated,// returning nil if none are populated.// It panics if the oneof descriptor does not belong to this message.WhichOneof(OneofDescriptor) FieldDescriptor// GetUnknown retrieves the entire list of unknown fields.// The caller may only mutate the contents of the RawFields// if the mutated bytes are stored back into the message with SetUnknown.GetUnknown() RawFields// SetUnknown stores an entire list of unknown fields.// The raw fields must be syntactically valid according to the wire format.// An implementation may panic if this is not the case.// Once stored, the caller must not mutate the content of the RawFields.// An empty RawFields may be passed to clear the fields.//// SetUnknown is a mutating operation and unsafe for concurrent use.SetUnknown(RawFields)// IsValid reports whether the message is valid.//// An invalid message is an empty, read-only value.//// An invalid message often corresponds to a nil pointer of the concrete// message type, but the details are implementation dependent.// Validity is not part of the protobuf data model, and may not// be preserved in marshaling or other operations.IsValid() bool// ProtoMethods returns optional fast-path implementations of various operations.// This method may return nil.//// The returned methods type is identical to// [google.golang.org/protobuf/runtime/protoiface.Methods].// Consult the protoiface package documentation for details.ProtoMethods() *methods}// RawFields is the raw bytes for an ordered sequence of fields.// Each field contains both the tag (representing field number and wire type),// and also the wire data itself.type RawFields []byte// IsValid reports whether b is syntactically correct wire format.func ( RawFields) () bool {for len() > 0 {, , := protowire.ConsumeField()if < 0 {return false}= [:]}return true}// List is a zero-indexed, ordered list.// The element [Value] type is determined by [FieldDescriptor.Kind].// Providing a [Value] that is invalid or of an incorrect type panics.type List interface {// Len reports the number of entries in the List.// Get, Set, and Truncate panic with out of bound indexes.Len() int// Get retrieves the value at the given index.// It never returns an invalid value.Get(int) Value// Set stores a value for the given index.// When setting a composite type, it is unspecified whether the set// value aliases the source's memory in any way.//// Set is a mutating operation and unsafe for concurrent use.Set(int, Value)// Append appends the provided value to the end of the list.// When appending a composite type, it is unspecified whether the appended// value aliases the source's memory in any way.//// Append is a mutating operation and unsafe for concurrent use.Append(Value)// AppendMutable appends a new, empty, mutable message value to the end// of the list and returns it.// It panics if the list does not contain a message type.AppendMutable() Value// Truncate truncates the list to a smaller length.//// Truncate is a mutating operation and unsafe for concurrent use.Truncate(int)// NewElement returns a new value for a list element.// For enums, this returns the first enum value.// For other scalars, this returns the zero value.// For messages, this returns a new, empty, mutable value.NewElement() Value// IsValid reports whether the list is valid.//// An invalid list is an empty, read-only value.//// Validity is not part of the protobuf data model, and may not// be preserved in marshaling or other operations.IsValid() bool}// Map is an unordered, associative map.// The entry [MapKey] type is determined by [FieldDescriptor.MapKey].Kind.// The entry [Value] type is determined by [FieldDescriptor.MapValue].Kind.// Providing a [MapKey] or [Value] that is invalid or of an incorrect type panics.type Map interface {// Len reports the number of elements in the map.Len() int// Range iterates over every map entry in an undefined order,// calling f for each key and value encountered.// Range calls f Len times unless f returns false, which stops iteration.// While iterating, mutating operations may only be performed// on the current map key.Range(f func(MapKey, Value) bool)// Has reports whether an entry with the given key is in the map.Has(MapKey) bool// Clear clears the entry associated with they given key.// The operation does nothing if there is no entry associated with the key.//// Clear is a mutating operation and unsafe for concurrent use.Clear(MapKey)// Get retrieves the value for an entry with the given key.// It returns an invalid value for non-existent entries.Get(MapKey) Value// Set stores the value for an entry with the given key.// It panics when given a key or value that is invalid or the wrong type.// When setting a composite type, it is unspecified whether the set// value aliases the source's memory in any way.//// Set is a mutating operation and unsafe for concurrent use.Set(MapKey, Value)// Mutable retrieves a mutable reference to the entry for the given key.// If no entry exists for the key, it creates a new, empty, mutable value// and stores it as the entry for the key.// It panics if the map value is not a message.Mutable(MapKey) Value// NewValue returns a new value assignable as a map value.// For enums, this returns the first enum value.// For other scalars, this returns the zero value.// For messages, this returns a new, empty, mutable value.NewValue() Value// IsValid reports whether the map is valid.//// An invalid map is an empty, read-only value.//// An invalid message often corresponds to a nil Go map value,// but the details are implementation dependent.// Validity is not part of the protobuf data model, and may not// be preserved in marshaling or other operations.IsValid() bool}
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64)