blob: d7acb337ede83bb1970e7b6523ebbb544d4ee6b0 [file] [log] [blame]
// 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 protoiface
import (
"reflect"
"google.golang.org/protobuf/reflect/protoreflect"
)
type MessageV1 interface {
Reset()
String() string
ProtoMessage()
}
type ExtensionRangeV1 struct {
Start, End int32 // both inclusive
}
type ExtensionDescV1 struct {
// Type is the descriptor type for the extension field using the v2 API.
// If populated, the information in this field takes precedence over
// all other fields in ExtensionDescV1.
Type protoreflect.ExtensionType
// 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 Type.ExtendedType instead.
ExtendedType MessageV1
// ExtensionType is zero value of the extension type.
//
// For historical reasons, reflect.TypeOf(ExtensionType) and Type.GoType
// may not be identical:
// * for scalars (except []byte), where ExtensionType uses *T,
// while Type.GoType uses T.
// * for repeated fields, where ExtensionType uses []T,
// while Type.GoType uses *[]T.
//
// Deprecated: Use Type.GoType instead.
ExtensionType interface{}
// Field is the field number of the extension.
//
// Deprecated: Use Type.Number instead.
Field int32
// Name is the fully qualified name of extension.
//
// Deprecated: Use Type.FullName 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 Type.Parent to ascend to the top-most parent and use
// protoreflect.FileDescriptor.Path.
Filename string
}
func (e ExtensionDescV1) getType() protoreflect.ExtensionType {
if e.Type != nil {
return e.Type
}
// All ExtensionDescV1 instances in generated code should have
// an Type field initialized at init time, so this case only
// occurs for non-standard generated code and hand-written
// ExtensionDescs.
panic(`proto: ExtensionDesc.Type is not set.
This error probably indicates that you are trying to use a non-standard
"github.com/golang/protobuf/proto".ExtensionDesc with the
"google.golang.org/golang/protobuf" API. Use a protoreflect.ExtensionType
instead.
`)
}
func (e ExtensionDescV1) New() protoreflect.Value { return e.getType().New() }
func (e ExtensionDescV1) Zero() protoreflect.Value { return e.getType().Zero() }
func (e ExtensionDescV1) GoType() reflect.Type { return e.getType().GoType() }
func (e ExtensionDescV1) Descriptor() protoreflect.ExtensionTypeDescriptor {
return e.getType().Descriptor()
}
func (e ExtensionDescV1) ValueOf(x interface{}) protoreflect.Value { return e.getType().ValueOf(x) }
func (e ExtensionDescV1) InterfaceOf(x protoreflect.Value) interface{} {
return e.getType().InterfaceOf(x)
}