11package data
22
33// this supports the enum type
4- // it is diffent than the rest since it is backed by
5- // a uint16, but has special semantics and interacts with the metadata
4+ // it is different than the rest since it is backed by
5+ // a uint16 but maps to the EnumItemIndex type, and has special semantics and interacts with the metadata
66// Unlike the other fields it can not be easily generated
77
8- type enumVector []uint16
8+ type enumVector []EnumItemIndex
9+
10+ type EnumItemIndex uint16
911
1012func newEnumVector (n int ) * enumVector {
11- v := enumVector (make ([]uint16 , n ))
13+ v := enumVector (make ([]EnumItemIndex , n ))
1214 return & v
1315}
1416
17+ func newEnumVectorWithValues (s []EnumItemIndex ) * enumVector {
18+ v := make ([]EnumItemIndex , len (s ))
19+ copy (v , s )
20+ return (* enumVector )(& v )
21+ }
22+
1523func (v * enumVector ) Set (idx int , i interface {}) {
16- (* v )[idx ] = i .(uint16 )
24+ (* v )[idx ] = i .(EnumItemIndex )
1725}
1826
1927func (v * enumVector ) SetConcrete (idx int , i interface {}) {
2028 v .Set (idx , i )
2129}
2230
2331func (v * enumVector ) Append (i interface {}) {
24- * v = append (* v , i .(uint16 ))
32+ * v = append (* v , i .(EnumItemIndex ))
2533}
2634
2735func (v * enumVector ) At (i int ) interface {} {
@@ -49,7 +57,7 @@ func (v *enumVector) Type() FieldType {
4957}
5058
5159func (v * enumVector ) Extend (i int ) {
52- * v = append (* v , make ([]uint16 , i )... )
60+ * v = append (* v , make ([]EnumItemIndex , i )... )
5361}
5462
5563func (v * enumVector ) Insert (i int , val interface {}) {
@@ -69,23 +77,29 @@ func (v *enumVector) Delete(i int) {
6977 * v = append ((* v )[:i ], (* v )[i + 1 :]... )
7078}
7179
72- type nullableEnumVector []* uint16
80+ type nullableEnumVector []* EnumItemIndex
7381
7482func newNullableEnumVector (n int ) * nullableEnumVector {
75- v := nullableEnumVector (make ([]* uint16 , n ))
83+ v := nullableEnumVector (make ([]* EnumItemIndex , n ))
7684 return & v
7785}
7886
87+ func newNullableEnumVectorWithValues (s []* EnumItemIndex ) * nullableEnumVector {
88+ v := make ([]* EnumItemIndex , len (s ))
89+ copy (v , s )
90+ return (* nullableEnumVector )(& v )
91+ }
92+
7993func (v * nullableEnumVector ) Set (idx int , i interface {}) {
8094 if i == nil {
8195 (* v )[idx ] = nil
8296 return
8397 }
84- (* v )[idx ] = i .(* uint16 )
98+ (* v )[idx ] = i .(* EnumItemIndex )
8599}
86100
87101func (v * nullableEnumVector ) SetConcrete (idx int , i interface {}) {
88- val := i .(uint16 )
102+ val := i .(EnumItemIndex )
89103 (* v )[idx ] = & val
90104}
91105
@@ -94,7 +108,7 @@ func (v *nullableEnumVector) Append(i interface{}) {
94108 * v = append (* v , nil )
95109 return
96110 }
97- * v = append (* v , i .(* uint16 ))
111+ * v = append (* v , i .(* EnumItemIndex ))
98112}
99113
100114func (v * nullableEnumVector ) At (i int ) interface {} {
@@ -103,15 +117,15 @@ func (v *nullableEnumVector) At(i int) interface{} {
103117
104118func (v * nullableEnumVector ) CopyAt (i int ) interface {} {
105119 if (* v )[i ] == nil {
106- var g * uint16
120+ var g * EnumItemIndex
107121 return g
108122 }
109123 g := * (* v )[i ]
110124 return & g
111125}
112126
113127func (v * nullableEnumVector ) ConcreteAt (i int ) (interface {}, bool ) {
114- var g uint16
128+ var g EnumItemIndex
115129 val := (* v )[i ]
116130 if val == nil {
117131 return g , false
@@ -133,7 +147,7 @@ func (v *nullableEnumVector) Type() FieldType {
133147}
134148
135149func (v * nullableEnumVector ) Extend (i int ) {
136- * v = append (* v , make ([]* uint16 , i )... )
150+ * v = append (* v , make ([]* EnumItemIndex , i )... )
137151}
138152
139153func (v * nullableEnumVector ) Insert (i int , val interface {}) {
0 commit comments