forked from sirkon/protoast
-
Notifications
You must be signed in to change notification settings - Fork 0
/
enum.go
76 lines (59 loc) · 1.46 KB
/
enum.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package ast
import "strings"
var _ Type = (*Enum)(nil)
var _ Named = (*Enum)(nil)
var _ Commented = (*Enum)(nil)
// Enum представление типа enum
type Enum struct {
unique
File *File
ParentMsg *Message
Name string
Comment *Comment
Options []*Option
Values []*EnumValue
}
func (e *Enum) GetName() string {
return e.Name
}
func (e *Enum) GetFullName() string {
return e.String()
}
func (e *Enum) GetComment() *Comment {
return e.Comment
}
func (*Enum) genericType() {}
func (*Enum) node() {}
// Enum референс-имя перечисления, включает в себя название пакета,
// имена родительских сообщений, в пространстве имён которых оно определено.
func (e *Enum) String() string {
var buf strings.Builder
if e.ParentMsg == nil {
buf.WriteString(e.File.Package)
} else {
buf.WriteString(e.ParentMsg.String())
}
buf.WriteByte('.')
buf.WriteString(e.Name)
return buf.String()
}
var _ Unique = (*EnumValue)(nil)
var _ Named = (*EnumValue)(nil)
var _ Commented = (*EnumValue)(nil)
// EnumValue представление поля для Enum-а
type EnumValue struct {
unique
Name string
Comment *Comment
Integer int
Options []*Option
}
func (e *EnumValue) GetName() string {
return e.Name
}
func (e *EnumValue) GetFullName() string {
return e.Name
}
func (e *EnumValue) GetComment() *Comment {
return e.Comment
}