Documentation ¶
Overview ¶
Package pb reflects over protocol buffer descriptors to generate objects that simplify type, enum, and field lookup.
Index ¶
- Variables
- type Db
- func (pbdb *Db) DescribeEnum(enumName string) (*EnumDescription, error)
- func (pbdb *Db) DescribeFile(message proto.Message) (*FileDescription, error)
- func (pbdb *Db) DescribeType(typeName string) (*TypeDescription, error)
- func (pbdb *Db) RegisterDescriptor(fileDesc *descpb.FileDescriptorProto) (*FileDescription, error)
- func (pbdb *Db) RegisterMessage(message proto.Message) (*FileDescription, error)
- type EnumDescription
- type FieldDescription
- func (fd *FieldDescription) CheckedType() *exprpb.Type
- func (fd *FieldDescription) GetterName() string
- func (fd *FieldDescription) Index() int
- func (fd *FieldDescription) IsEnum() bool
- func (fd *FieldDescription) IsMap() bool
- func (fd *FieldDescription) IsMessage() bool
- func (fd *FieldDescription) IsOneof() bool
- func (fd *FieldDescription) IsRepeated() bool
- func (fd *FieldDescription) IsWrapper() bool
- func (fd *FieldDescription) Name() string
- func (fd *FieldDescription) OneofType() reflect.Type
- func (fd *FieldDescription) OrigName() string
- func (fd *FieldDescription) String() string
- func (fd *FieldDescription) SupportsPresence() bool
- func (fd *FieldDescription) Type() *TypeDescription
- func (fd *FieldDescription) TypeName() string
- type FileDescription
- func (fd *FileDescription) GetEnumDescription(enumName string) (*EnumDescription, error)
- func (fd *FileDescription) GetEnumNames() []string
- func (fd *FileDescription) GetTypeDescription(typeName string) (*TypeDescription, error)
- func (fd *FileDescription) GetTypeNames() []string
- func (fd *FileDescription) Package() string
- type TypeDescription
Constants ¶
This section is empty.
Variables ¶
var ( // CheckedPrimitives map from proto field descriptor type to expr.Type. CheckedPrimitives = map[descpb.FieldDescriptorProto_Type]*exprpb.Type{ descpb.FieldDescriptorProto_TYPE_BOOL: checkedBool, descpb.FieldDescriptorProto_TYPE_BYTES: checkedBytes, descpb.FieldDescriptorProto_TYPE_DOUBLE: checkedDouble, descpb.FieldDescriptorProto_TYPE_FLOAT: checkedDouble, descpb.FieldDescriptorProto_TYPE_INT32: checkedInt, descpb.FieldDescriptorProto_TYPE_INT64: checkedInt, descpb.FieldDescriptorProto_TYPE_SINT32: checkedInt, descpb.FieldDescriptorProto_TYPE_SINT64: checkedInt, descpb.FieldDescriptorProto_TYPE_UINT32: checkedUint, descpb.FieldDescriptorProto_TYPE_UINT64: checkedUint, descpb.FieldDescriptorProto_TYPE_FIXED32: checkedUint, descpb.FieldDescriptorProto_TYPE_FIXED64: checkedUint, descpb.FieldDescriptorProto_TYPE_STRING: checkedString} // CheckedWellKnowns map from qualified proto type name to expr.Type for // well-known proto types. CheckedWellKnowns = map[string]*exprpb.Type{ "google.protobuf.BoolValue": checkedWrap(checkedBool), "google.protobuf.BytesValue": checkedWrap(checkedBytes), "google.protobuf.DoubleValue": checkedWrap(checkedDouble), "google.protobuf.FloatValue": checkedWrap(checkedDouble), "google.protobuf.Int64Value": checkedWrap(checkedInt), "google.protobuf.Int32Value": checkedWrap(checkedInt), "google.protobuf.UInt64Value": checkedWrap(checkedUint), "google.protobuf.UInt32Value": checkedWrap(checkedUint), "google.protobuf.StringValue": checkedWrap(checkedString), "google.protobuf.Any": checkedAny, "google.protobuf.Duration": checkedDuration, "google.protobuf.Timestamp": checkedTimestamp, "google.protobuf.ListValue": checkedListDyn, "google.protobuf.NullValue": checkedNull, "google.protobuf.Struct": checkedMapStringDyn, "google.protobuf.Value": checkedDyn, } )
var ( // DefaultDb used at evaluation time or unless overridden at check time. DefaultDb = &Db{ revFileDescriptorMap: make(map[string]*FileDescription), } )
Functions ¶
This section is empty.
Types ¶
type Db ¶ added in v0.2.0
type Db struct {
// contains filtered or unexported fields
}
Db maps from file / message / enum name to file description.
func NewDb ¶ added in v0.2.0
func NewDb() *Db
NewDb creates a new `pb.Db` with an empty type name to file description map.
func (*Db) DescribeEnum ¶ added in v0.2.0
func (pbdb *Db) DescribeEnum(enumName string) (*EnumDescription, error)
DescribeEnum takes a qualified enum name and returns an `EnumDescription` if it exists in the `pb.Db`.
func (*Db) DescribeFile ¶ added in v0.2.0
func (pbdb *Db) DescribeFile(message proto.Message) (*FileDescription, error)
DescribeFile gets the `FileDescription` for the `message` type if it exists in the `pb.Db`.
func (*Db) DescribeType ¶ added in v0.2.0
func (pbdb *Db) DescribeType(typeName string) (*TypeDescription, error)
DescribeType returns a `TypeDescription` for the `typeName` if it exists in the `pb.Db`.
func (*Db) RegisterDescriptor ¶ added in v0.2.0
func (pbdb *Db) RegisterDescriptor(fileDesc *descpb.FileDescriptorProto) (*FileDescription, error)
RegisterDescriptor produces a `FileDescription` from a `FileDescriptorProto` and registers the message and enum types into the `pb.Db`.
func (*Db) RegisterMessage ¶ added in v0.2.0
func (pbdb *Db) RegisterMessage(message proto.Message) (*FileDescription, error)
RegisterMessage produces a `FileDescription` from a `message` and registers the message and all other definitions within the message file into the `pb.Db`.
type EnumDescription ¶
type EnumDescription struct {
// contains filtered or unexported fields
}
EnumDescription maps a qualified enum name to its numeric value.
func (*EnumDescription) Value ¶
func (ed *EnumDescription) Value() int32
Value (numeric) of the enum.
type FieldDescription ¶
type FieldDescription struct {
// contains filtered or unexported fields
}
FieldDescription holds metadata related to fields declared within a type.
func (*FieldDescription) CheckedType ¶
func (fd *FieldDescription) CheckedType() *exprpb.Type
CheckedType returns the type-definition used at type-check time.
func (*FieldDescription) GetterName ¶
func (fd *FieldDescription) GetterName() string
GetterName returns the accessor method name associated with the field on the proto generated struct.
func (*FieldDescription) Index ¶
func (fd *FieldDescription) Index() int
Index returns the field index within a reflected value.
func (*FieldDescription) IsEnum ¶
func (fd *FieldDescription) IsEnum() bool
IsEnum returns true if the field type refers to an enum value.
func (*FieldDescription) IsMap ¶
func (fd *FieldDescription) IsMap() bool
IsMap returns true if the field is of map type.
func (*FieldDescription) IsMessage ¶
func (fd *FieldDescription) IsMessage() bool
IsMessage returns true if the field is of message type.
func (*FieldDescription) IsOneof ¶
func (fd *FieldDescription) IsOneof() bool
IsOneof returns true if the field is declared within a oneof block.
func (*FieldDescription) IsRepeated ¶
func (fd *FieldDescription) IsRepeated() bool
IsRepeated returns true if the field is a repeated value.
This method will also return true for map values, so check whether the field is also a map.
func (*FieldDescription) IsWrapper ¶ added in v0.3.0
func (fd *FieldDescription) IsWrapper() bool
IsWrapper returns true if the field type is a primitive wrapper type.
func (*FieldDescription) Name ¶
func (fd *FieldDescription) Name() string
Name returns the CamelCase name of the field within the proto-based struct.
func (*FieldDescription) OneofType ¶
func (fd *FieldDescription) OneofType() reflect.Type
OneofType returns the reflect.Type value of a oneof field.
Oneof field values are wrapped in a struct which contains one field whose value is a proto.Message.
func (*FieldDescription) OrigName ¶
func (fd *FieldDescription) OrigName() string
OrigName returns the snake_case name of the field as it was declared within the proto. This is the same name format that is expected within expressions.
func (*FieldDescription) String ¶
func (fd *FieldDescription) String() string
String returns a struct-like field definition string.
func (*FieldDescription) SupportsPresence ¶
func (fd *FieldDescription) SupportsPresence() bool
SupportsPresence returns true if the field supports presence detection.
func (*FieldDescription) Type ¶ added in v0.3.0
func (fd *FieldDescription) Type() *TypeDescription
Type returns the TypeDescription for the field.
func (*FieldDescription) TypeName ¶
func (fd *FieldDescription) TypeName() string
TypeName returns the type name of the field.
type FileDescription ¶
type FileDescription struct {
// contains filtered or unexported fields
}
FileDescription holds a map of all types and enums declared within a .proto file.
func (*FileDescription) GetEnumDescription ¶
func (fd *FileDescription) GetEnumDescription(enumName string) (*EnumDescription, error)
GetEnumDescription returns an EnumDescription for a qualified enum value name declared within the .proto file.
func (*FileDescription) GetEnumNames ¶
func (fd *FileDescription) GetEnumNames() []string
GetEnumNames returns the string names of all enum values in the file.
func (*FileDescription) GetTypeDescription ¶
func (fd *FileDescription) GetTypeDescription(typeName string) (*TypeDescription, error)
GetTypeDescription returns a TypeDescription for a qualified type name declared within the .proto file.
func (*FileDescription) GetTypeNames ¶
func (fd *FileDescription) GetTypeNames() []string
GetTypeNames returns the list of all type names contained within the file.
func (*FileDescription) Package ¶
func (fd *FileDescription) Package() string
Package returns the file's qualified package name.
type TypeDescription ¶
type TypeDescription struct {
// contains filtered or unexported fields
}
TypeDescription is a collection of type metadata relevant to expression checking and evaluation.
func (*TypeDescription) DefaultValue ¶ added in v0.3.0
func (td *TypeDescription) DefaultValue() proto.Message
DefaultValue returns an empty instance of the proto message associated with the type.
func (*TypeDescription) FieldByName ¶
func (td *TypeDescription) FieldByName(name string) (*FieldDescription, bool)
FieldByName returns the FieldDescription associated with a field name.
func (*TypeDescription) FieldCount ¶
func (td *TypeDescription) FieldCount() int
FieldCount returns the number of fields declared within the type.
func (*TypeDescription) ReflectType ¶
func (td *TypeDescription) ReflectType() reflect.Type
ReflectType returns the reflected struct type of the generated proto struct.