...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package vanity
30
31 import (
32 "github.com/gogo/protobuf/gogoproto"
33 "github.com/gogo/protobuf/proto"
34 descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor"
35 )
36
37 func MessageHasBoolExtension(msg *descriptor.DescriptorProto, extension *proto.ExtensionDesc) bool {
38 if msg.Options == nil {
39 return false
40 }
41 value, err := proto.GetExtension(msg.Options, extension)
42 if err != nil {
43 return false
44 }
45 if value == nil {
46 return false
47 }
48 if value.(*bool) == nil {
49 return false
50 }
51 return true
52 }
53
54 func SetBoolMessageOption(extension *proto.ExtensionDesc, value bool) func(msg *descriptor.DescriptorProto) {
55 return func(msg *descriptor.DescriptorProto) {
56 if MessageHasBoolExtension(msg, extension) {
57 return
58 }
59 if msg.Options == nil {
60 msg.Options = &descriptor.MessageOptions{}
61 }
62 if err := proto.SetExtension(msg.Options, extension, &value); err != nil {
63 panic(err)
64 }
65 }
66 }
67
68 func TurnOffGoGetters(msg *descriptor.DescriptorProto) {
69 SetBoolMessageOption(gogoproto.E_GoprotoGetters, false)(msg)
70 }
71
72 func TurnOffGoStringer(msg *descriptor.DescriptorProto) {
73 SetBoolMessageOption(gogoproto.E_GoprotoStringer, false)(msg)
74 }
75
76 func TurnOnVerboseEqual(msg *descriptor.DescriptorProto) {
77 SetBoolMessageOption(gogoproto.E_VerboseEqual, true)(msg)
78 }
79
80 func TurnOnFace(msg *descriptor.DescriptorProto) {
81 SetBoolMessageOption(gogoproto.E_Face, true)(msg)
82 }
83
84 func TurnOnGoString(msg *descriptor.DescriptorProto) {
85 SetBoolMessageOption(gogoproto.E_Face, true)(msg)
86 }
87
88 func TurnOnPopulate(msg *descriptor.DescriptorProto) {
89 SetBoolMessageOption(gogoproto.E_Populate, true)(msg)
90 }
91
92 func TurnOnStringer(msg *descriptor.DescriptorProto) {
93 SetBoolMessageOption(gogoproto.E_Stringer, true)(msg)
94 }
95
96 func TurnOnEqual(msg *descriptor.DescriptorProto) {
97 SetBoolMessageOption(gogoproto.E_Equal, true)(msg)
98 }
99
100 func TurnOnDescription(msg *descriptor.DescriptorProto) {
101 SetBoolMessageOption(gogoproto.E_Description, true)(msg)
102 }
103
104 func TurnOnTestGen(msg *descriptor.DescriptorProto) {
105 SetBoolMessageOption(gogoproto.E_Testgen, true)(msg)
106 }
107
108 func TurnOnBenchGen(msg *descriptor.DescriptorProto) {
109 SetBoolMessageOption(gogoproto.E_Benchgen, true)(msg)
110 }
111
112 func TurnOnMarshaler(msg *descriptor.DescriptorProto) {
113 SetBoolMessageOption(gogoproto.E_Marshaler, true)(msg)
114 }
115
116 func TurnOnUnmarshaler(msg *descriptor.DescriptorProto) {
117 SetBoolMessageOption(gogoproto.E_Unmarshaler, true)(msg)
118 }
119
120 func TurnOnSizer(msg *descriptor.DescriptorProto) {
121 SetBoolMessageOption(gogoproto.E_Sizer, true)(msg)
122 }
123
124 func TurnOnUnsafeUnmarshaler(msg *descriptor.DescriptorProto) {
125 SetBoolMessageOption(gogoproto.E_UnsafeUnmarshaler, true)(msg)
126 }
127
128 func TurnOnUnsafeMarshaler(msg *descriptor.DescriptorProto) {
129 SetBoolMessageOption(gogoproto.E_UnsafeMarshaler, true)(msg)
130 }
131
132 func TurnOffGoExtensionsMap(msg *descriptor.DescriptorProto) {
133 SetBoolMessageOption(gogoproto.E_GoprotoExtensionsMap, false)(msg)
134 }
135
136 func TurnOffGoUnrecognized(msg *descriptor.DescriptorProto) {
137 SetBoolMessageOption(gogoproto.E_GoprotoUnrecognized, false)(msg)
138 }
139
140 func TurnOffGoUnkeyed(msg *descriptor.DescriptorProto) {
141 SetBoolMessageOption(gogoproto.E_GoprotoUnkeyed, false)(msg)
142 }
143
144 func TurnOffGoSizecache(msg *descriptor.DescriptorProto) {
145 SetBoolMessageOption(gogoproto.E_GoprotoSizecache, false)(msg)
146 }
147
148 func TurnOnCompare(msg *descriptor.DescriptorProto) {
149 SetBoolMessageOption(gogoproto.E_Compare, true)(msg)
150 }
151
152 func TurnOnMessageName(msg *descriptor.DescriptorProto) {
153 SetBoolMessageOption(gogoproto.E_Messagename, true)(msg)
154 }
155
View as plain text