-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathgen_enum.go
More file actions
178 lines (161 loc) · 4.39 KB
/
Copy pathgen_enum.go
File metadata and controls
178 lines (161 loc) · 4.39 KB
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
// Code generated by go-enum DO NOT EDIT.
// Version: 0.6.0
// Revision: 919e61c0174b91303753ee3898569a01abb32c97
// Build Date: 2023-12-18T15:54:43Z
// Built By: goreleaser
package bench
import (
"database/sql/driver"
"errors"
"fmt"
)
const (
// GenEnumTypeT0 is a GenEnumType of type T0.
GenEnumTypeT0 GenEnumType = iota
// GenEnumTypeT1 is a GenEnumType of type T1.
GenEnumTypeT1
// GenEnumTypeT2 is a GenEnumType of type T2.
GenEnumTypeT2
// GenEnumTypeT3 is a GenEnumType of type T3.
GenEnumTypeT3
// GenEnumTypeT4 is a GenEnumType of type T4.
GenEnumTypeT4
// GenEnumTypeT5 is a GenEnumType of type T5.
GenEnumTypeT5
// GenEnumTypeT6 is a GenEnumType of type T6.
GenEnumTypeT6
// GenEnumTypeT7 is a GenEnumType of type T7.
GenEnumTypeT7
// GenEnumTypeT8 is a GenEnumType of type T8.
GenEnumTypeT8
// GenEnumTypeT9 is a GenEnumType of type T9.
GenEnumTypeT9
)
var ErrInvalidGenEnumType = errors.New("not a valid GenEnumType")
const _GenEnumTypeName = "t0t1t2t3t4t5t6t7t8t9"
var _GenEnumTypeMap = map[GenEnumType]string{
GenEnumTypeT0: _GenEnumTypeName[0:2],
GenEnumTypeT1: _GenEnumTypeName[2:4],
GenEnumTypeT2: _GenEnumTypeName[4:6],
GenEnumTypeT3: _GenEnumTypeName[6:8],
GenEnumTypeT4: _GenEnumTypeName[8:10],
GenEnumTypeT5: _GenEnumTypeName[10:12],
GenEnumTypeT6: _GenEnumTypeName[12:14],
GenEnumTypeT7: _GenEnumTypeName[14:16],
GenEnumTypeT8: _GenEnumTypeName[16:18],
GenEnumTypeT9: _GenEnumTypeName[18:20],
}
// String implements the Stringer interface.
func (x GenEnumType) String() string {
if str, ok := _GenEnumTypeMap[x]; ok {
return str
}
return fmt.Sprintf("GenEnumType(%d)", x)
}
// IsValid provides a quick way to determine if the typed value is
// part of the allowed enumerated values
func (x GenEnumType) IsValid() bool {
_, ok := _GenEnumTypeMap[x]
return ok
}
var _GenEnumTypeValue = map[string]GenEnumType{
_GenEnumTypeName[0:2]: GenEnumTypeT0,
_GenEnumTypeName[2:4]: GenEnumTypeT1,
_GenEnumTypeName[4:6]: GenEnumTypeT2,
_GenEnumTypeName[6:8]: GenEnumTypeT3,
_GenEnumTypeName[8:10]: GenEnumTypeT4,
_GenEnumTypeName[10:12]: GenEnumTypeT5,
_GenEnumTypeName[12:14]: GenEnumTypeT6,
_GenEnumTypeName[14:16]: GenEnumTypeT7,
_GenEnumTypeName[16:18]: GenEnumTypeT8,
_GenEnumTypeName[18:20]: GenEnumTypeT9,
}
// ParseGenEnumType attempts to convert a string to a GenEnumType.
func ParseGenEnumType(name string) (GenEnumType, error) {
if x, ok := _GenEnumTypeValue[name]; ok {
return x, nil
}
return GenEnumType(0), fmt.Errorf("%s is %w", name, ErrInvalidGenEnumType)
}
// MarshalText implements the text marshaller method.
func (x GenEnumType) MarshalText() ([]byte, error) {
return []byte(x.String()), nil
}
// UnmarshalText implements the text unmarshaller method.
func (x *GenEnumType) UnmarshalText(text []byte) error {
name := string(text)
tmp, err := ParseGenEnumType(name)
if err != nil {
return err
}
*x = tmp
return nil
}
var errGenEnumTypeNilPtr = errors.New("value pointer is nil") // one per type for package clashes
// Scan implements the Scanner interface.
func (x *GenEnumType) Scan(value interface{}) (err error) {
if value == nil {
*x = GenEnumType(0)
return
}
// A wider range of scannable types.
// driver.Value values at the top of the list for expediency
switch v := value.(type) {
case int64:
*x = GenEnumType(v)
case string:
*x, err = ParseGenEnumType(v)
case []byte:
*x, err = ParseGenEnumType(string(v))
case GenEnumType:
*x = v
case int:
*x = GenEnumType(v)
case *GenEnumType:
if v == nil {
return errGenEnumTypeNilPtr
}
*x = *v
case uint:
*x = GenEnumType(v)
case uint64:
*x = GenEnumType(v)
case *int:
if v == nil {
return errGenEnumTypeNilPtr
}
*x = GenEnumType(*v)
case *int64:
if v == nil {
return errGenEnumTypeNilPtr
}
*x = GenEnumType(*v)
case float64: // json marshals everything as a float64 if it's a number
*x = GenEnumType(v)
case *float64: // json marshals everything as a float64 if it's a number
if v == nil {
return errGenEnumTypeNilPtr
}
*x = GenEnumType(*v)
case *uint:
if v == nil {
return errGenEnumTypeNilPtr
}
*x = GenEnumType(*v)
case *uint64:
if v == nil {
return errGenEnumTypeNilPtr
}
*x = GenEnumType(*v)
case *string:
if v == nil {
return errGenEnumTypeNilPtr
}
*x, err = ParseGenEnumType(*v)
}
return
}
// Value implements the driver Valuer interface.
func (x GenEnumType) Value() (driver.Value, error) {
return x.String(), nil
}