vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go
changeset 260 445e01aede7e
parent 256 6d9efbef00a9
equal deleted inserted replaced
259:db4911b0c721 260:445e01aede7e
     8 import (
     8 import (
     9 	"math"
     9 	"math"
    10 
    10 
    11 	"google.golang.org/protobuf/encoding/protowire"
    11 	"google.golang.org/protobuf/encoding/protowire"
    12 	"google.golang.org/protobuf/internal/errors"
    12 	"google.golang.org/protobuf/internal/errors"
    13 	pref "google.golang.org/protobuf/reflect/protoreflect"
    13 	"google.golang.org/protobuf/reflect/protoreflect"
    14 )
    14 )
    15 
    15 
    16 // The MessageSet wire format is equivalent to a message defined as follows,
    16 // The MessageSet wire format is equivalent to a message defined as follows,
    17 // where each Item defines an extension field with a field number of 'type_id'
    17 // where each Item defines an extension field with a field number of 'type_id'
    18 // and content of 'message'. MessageSet extensions must be non-repeated message
    18 // and content of 'message'. MessageSet extensions must be non-repeated message
    31 )
    31 )
    32 
    32 
    33 // ExtensionName is the field name for extensions of MessageSet.
    33 // ExtensionName is the field name for extensions of MessageSet.
    34 //
    34 //
    35 // A valid MessageSet extension must be of the form:
    35 // A valid MessageSet extension must be of the form:
       
    36 //
    36 //	message MyMessage {
    37 //	message MyMessage {
    37 //		extend proto2.bridge.MessageSet {
    38 //		extend proto2.bridge.MessageSet {
    38 //			optional MyMessage message_set_extension = 1234;
    39 //			optional MyMessage message_set_extension = 1234;
    39 //		}
    40 //		}
    40 //		...
    41 //		...
    41 //	}
    42 //	}
    42 const ExtensionName = "message_set_extension"
    43 const ExtensionName = "message_set_extension"
    43 
    44 
    44 // IsMessageSet returns whether the message uses the MessageSet wire format.
    45 // IsMessageSet returns whether the message uses the MessageSet wire format.
    45 func IsMessageSet(md pref.MessageDescriptor) bool {
    46 func IsMessageSet(md protoreflect.MessageDescriptor) bool {
    46 	xmd, ok := md.(interface{ IsMessageSet() bool })
    47 	xmd, ok := md.(interface{ IsMessageSet() bool })
    47 	return ok && xmd.IsMessageSet()
    48 	return ok && xmd.IsMessageSet()
    48 }
    49 }
    49 
    50 
    50 // IsMessageSetExtension reports this field properly extends a MessageSet.
    51 // IsMessageSetExtension reports this field properly extends a MessageSet.
    51 func IsMessageSetExtension(fd pref.FieldDescriptor) bool {
    52 func IsMessageSetExtension(fd protoreflect.FieldDescriptor) bool {
    52 	switch {
    53 	switch {
    53 	case fd.Name() != ExtensionName:
    54 	case fd.Name() != ExtensionName:
    54 		return false
    55 		return false
    55 	case !IsMessageSet(fd.ContainingMessage()):
    56 	case !IsMessageSet(fd.ContainingMessage()):
    56 		return false
    57 		return false