-
Notifications
You must be signed in to change notification settings - Fork 13
/
fast_plugin.go
53 lines (45 loc) · 1.19 KB
/
fast_plugin.go
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package fastreflection
import (
"github.com/cosmos/cosmos-proto/generator"
"google.golang.org/protobuf/compiler/protogen"
)
func init() {
generator.RegisterFeature("fast", func(gen *generator.GeneratedFile, _ *protogen.Plugin) generator.FeatureGenerator {
return fastReflectionFeature{
GeneratedFile: gen,
Stable: false,
once: false,
}
})
}
type fastReflectionFeature struct {
*generator.GeneratedFile
Stable, once bool
}
type fastGenerator struct {
*generator.GeneratedFile
file *protogen.File
message *protogen.Message
Stable bool
typeName string
err error
}
func newGenerator(f *protogen.File, g *generator.GeneratedFile, message *protogen.Message) *fastGenerator {
return &fastGenerator{
GeneratedFile: g,
file: f,
message: message,
Stable: true,
typeName: fastReflectionTypeName(message),
err: nil,
}
}
func (g fastReflectionFeature) GenerateFile(file *protogen.File, _ *protogen.Plugin) bool {
for _, msg := range file.Messages {
GenProtoMessage(file, g.GeneratedFile, msg)
}
return true // only do this once
}
func (g fastReflectionFeature) GenerateHelpers() {
// no helpers needed here yet
}