forked from sirkon/protoast
-
Notifications
You must be signed in to change notification settings - Fork 0
/
extension.go
51 lines (42 loc) · 1.01 KB
/
extension.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
package ast
var _ Type = &Extension{}
// Extension представление extension
type Extension struct {
unique
File *File
ParentMsg *Message
Name string
Fields []*ExtensionField
Types []Type
}
func (*Extension) genericType() {}
func (*Extension) node() {}
var _ Unique = &ExtensionField{}
// ExtensionField представление поля extension-а
type ExtensionField struct {
unique
Name string
Sequence int
Type Type
Options []*Option
}
// MessageToExtension копирует Message в Extension с сохранением всей информации
func MessageToExtension(msg *Message) *Extension {
ext := &Extension{
unique: msg.unique,
File: msg.File,
ParentMsg: msg.ParentMsg,
Name: msg.Name,
Types: msg.Types,
}
for _, f := range msg.Fields {
ext.Fields = append(ext.Fields, &ExtensionField{
unique: f.unique,
Name: f.Name,
Sequence: f.Sequence,
Type: f.Type,
Options: f.Options,
})
}
return ext
}