-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.go
82 lines (72 loc) · 1.37 KB
/
types.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
package internal
// TemplateType represents a template type.
type TemplateType uint
// the order here will be the alter the output order per file.
const (
StructTemplate TemplateType = iota
FuncTemplate
)
// String returns the name for the associated template type.
func (tt TemplateType) String() string {
var s string
switch tt {
case StructTemplate:
s = "xosauce_struct"
case FuncTemplate:
s = "xosauce_func"
default:
panic("unknown TemplateType")
}
return s
}
// Editable
type EditableType bool
const (
FileEditableType EditableType = true
FileNotEditableType EditableType = false
)
// Suffix ...
func (e EditableType) FileSuffix() string {
var s string
switch e {
case FileEditableType:
s = ".go"
case FileNotEditableType:
s = ".generated.go"
}
return s
}
// Package ...
func (e EditableType) HeaderTemplate() string {
var s string
switch e {
case FileEditableType:
s = "xosauce_package_editable.go.tpl"
case FileNotEditableType:
s = "xosauce_package_noteditable.go.tpl"
default:
panic("unknown PackageType")
}
return s
}
// Field contains field information.
type Field struct {
Name string
Type string
NilType string
IsArray bool
IsPtr bool
}
// Struct ...
type Struct struct {
Package string
Name string
Fields []*Field
}
// Func ...
type Func struct {
Package string
Name string
Params []*Field
Return *Field
}