1*1c12ee1eSDan Willemsen// Copyright 2020 The Go Authors. All rights reserved. 2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style 3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file. 4*1c12ee1eSDan Willemsen 5*1c12ee1eSDan Willemsenpackage protoreflect 6*1c12ee1eSDan Willemsen 7*1c12ee1eSDan Willemsenimport ( 8*1c12ee1eSDan Willemsen "google.golang.org/protobuf/internal/pragma" 9*1c12ee1eSDan Willemsen) 10*1c12ee1eSDan Willemsen 11*1c12ee1eSDan Willemsen// The following types are used by the fast-path Message.ProtoMethods method. 12*1c12ee1eSDan Willemsen// 13*1c12ee1eSDan Willemsen// To avoid polluting the public protoreflect API with types used only by 14*1c12ee1eSDan Willemsen// low-level implementations, the canonical definitions of these types are 15*1c12ee1eSDan Willemsen// in the runtime/protoiface package. The definitions here and in protoiface 16*1c12ee1eSDan Willemsen// must be kept in sync. 17*1c12ee1eSDan Willemsentype ( 18*1c12ee1eSDan Willemsen methods = struct { 19*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 20*1c12ee1eSDan Willemsen Flags supportFlags 21*1c12ee1eSDan Willemsen Size func(sizeInput) sizeOutput 22*1c12ee1eSDan Willemsen Marshal func(marshalInput) (marshalOutput, error) 23*1c12ee1eSDan Willemsen Unmarshal func(unmarshalInput) (unmarshalOutput, error) 24*1c12ee1eSDan Willemsen Merge func(mergeInput) mergeOutput 25*1c12ee1eSDan Willemsen CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error) 26*1c12ee1eSDan Willemsen } 27*1c12ee1eSDan Willemsen supportFlags = uint64 28*1c12ee1eSDan Willemsen sizeInput = struct { 29*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 30*1c12ee1eSDan Willemsen Message Message 31*1c12ee1eSDan Willemsen Flags uint8 32*1c12ee1eSDan Willemsen } 33*1c12ee1eSDan Willemsen sizeOutput = struct { 34*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 35*1c12ee1eSDan Willemsen Size int 36*1c12ee1eSDan Willemsen } 37*1c12ee1eSDan Willemsen marshalInput = struct { 38*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 39*1c12ee1eSDan Willemsen Message Message 40*1c12ee1eSDan Willemsen Buf []byte 41*1c12ee1eSDan Willemsen Flags uint8 42*1c12ee1eSDan Willemsen } 43*1c12ee1eSDan Willemsen marshalOutput = struct { 44*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 45*1c12ee1eSDan Willemsen Buf []byte 46*1c12ee1eSDan Willemsen } 47*1c12ee1eSDan Willemsen unmarshalInput = struct { 48*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 49*1c12ee1eSDan Willemsen Message Message 50*1c12ee1eSDan Willemsen Buf []byte 51*1c12ee1eSDan Willemsen Flags uint8 52*1c12ee1eSDan Willemsen Resolver interface { 53*1c12ee1eSDan Willemsen FindExtensionByName(field FullName) (ExtensionType, error) 54*1c12ee1eSDan Willemsen FindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error) 55*1c12ee1eSDan Willemsen } 56*1c12ee1eSDan Willemsen Depth int 57*1c12ee1eSDan Willemsen } 58*1c12ee1eSDan Willemsen unmarshalOutput = struct { 59*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 60*1c12ee1eSDan Willemsen Flags uint8 61*1c12ee1eSDan Willemsen } 62*1c12ee1eSDan Willemsen mergeInput = struct { 63*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 64*1c12ee1eSDan Willemsen Source Message 65*1c12ee1eSDan Willemsen Destination Message 66*1c12ee1eSDan Willemsen } 67*1c12ee1eSDan Willemsen mergeOutput = struct { 68*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 69*1c12ee1eSDan Willemsen Flags uint8 70*1c12ee1eSDan Willemsen } 71*1c12ee1eSDan Willemsen checkInitializedInput = struct { 72*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 73*1c12ee1eSDan Willemsen Message Message 74*1c12ee1eSDan Willemsen } 75*1c12ee1eSDan Willemsen checkInitializedOutput = struct { 76*1c12ee1eSDan Willemsen pragma.NoUnkeyedLiterals 77*1c12ee1eSDan Willemsen } 78*1c12ee1eSDan Willemsen) 79