-
Notifications
You must be signed in to change notification settings - Fork 0
/
StructDefinition.go
90 lines (70 loc) · 2.27 KB
/
StructDefinition.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package yacc
import (
"encoding/json"
"github.com/bhbosman/CodeGenerators/mitchgenerator/interfaces"
)
//go:generate goyacc -o idl.go -p "IdlExpr" idl.y
type MitchMessageDefinition struct {
Type string `json:"Type"`
Identifier string `json:"Identifier"`
Members []*Member `json:"Members"`
Next interfaces.IDefinitionDeclaration `json:"-"`
MessageLength uint16
MessageType byte
}
func (self *MitchMessageDefinition) HasMessageInformation() bool {
return self.MessageType != 0 && self.MessageLength != 0
}
func (self *MitchMessageDefinition) GetStreamFunctionName() string {
return self.Identifier
}
func (self *MitchMessageDefinition) GetPackageName() (bool, string, string) {
return true, "", self.Identifier
}
func (self *MitchMessageDefinition) GetSequenceCount() (bool, int) {
return false, 0
}
func (self *MitchMessageDefinition) Kind() interfaces.Kind {
return interfaces.Struct
}
func (self *MitchMessageDefinition) DefaultValue() string {
return "nil"
}
func (self *MitchMessageDefinition) Predefined() bool {
return false
}
func (self *MitchMessageDefinition) GetScopeName() string {
return self.Identifier
}
func (self *MitchMessageDefinition) ClearNext() {
self.Next = nil
}
func (self *MitchMessageDefinition) SetNext(typeSpec interfaces.IDefinitionDeclaration) {
self.Next = typeSpec
}
func (self *MitchMessageDefinition) GetName() string {
return self.Identifier
}
func (self *MitchMessageDefinition) AddMember(typeSpec interfaces.IDefinedType, declarator interfaces.IDeclarator) {
self.Members = append(self.Members, NewMember(typeSpec, declarator, nil))
}
func (self *MitchMessageDefinition) String() string {
bytes, err := json.MarshalIndent(self, "", "\t")
if err != nil {
return err.Error()
}
return string(bytes)
}
func (self *MitchMessageDefinition) GetNext() interfaces.IDefinitionDeclaration {
return self.Next
}
func NewMitchMessageDefinition(identifier string, MessageLength int64, MessageType int64) *MitchMessageDefinition {
return &MitchMessageDefinition{
Type: "struct",
Identifier: identifier,
Members: make([]*Member, 0),
Next: nil,
MessageLength: uint16(MessageLength),
MessageType: byte(MessageType),
}
}