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