gitlab.com/evatix-go/core@v1.3.55/bytetype/bytetype.go (about) 1 package bytetype 2 3 import ( 4 "math" 5 "strconv" 6 7 "gitlab.com/evatix-go/core/coredata/corejson" 8 "gitlab.com/evatix-go/core/coreinterface/enuminf" 9 ) 10 11 type Variant byte 12 13 const ( 14 Zero Variant = 0 15 Min Variant = 0 16 One Variant = 1 17 Two Variant = 2 18 Three Variant = 3 19 Max Variant = math.MaxUint8 20 ) 21 22 func (it Variant) IsZero() bool { 23 return it == Zero 24 } 25 26 func (it Variant) IsOne() bool { 27 return it == One 28 } 29 30 func (it Variant) IsTwo() bool { 31 return it == Two 32 } 33 34 func (it Variant) IsThree() bool { 35 return it == Three 36 } 37 38 func (it Variant) IsMin() bool { 39 return it == Min 40 } 41 42 func (it Variant) IsMax() bool { 43 return it == Max 44 } 45 46 func (it Variant) AllNameValues() []string { 47 return BasicEnumImpl.AllNameValues() 48 } 49 50 func (it Variant) OnlySupportedErr( 51 names ...string, 52 ) error { 53 return BasicEnumImpl.OnlySupportedErr(names...) 54 } 55 56 func (it Variant) OnlySupportedMsgErr( 57 message string, 58 names ...string, 59 ) error { 60 return BasicEnumImpl.OnlySupportedMsgErr( 61 message, names...) 62 } 63 64 func (it Variant) ValueUInt16() uint16 { 65 return uint16(it) 66 } 67 68 func (it Variant) IntegerEnumRanges() []int { 69 return BasicEnumImpl.IntegerEnumRanges() 70 } 71 72 func (it Variant) MinMaxAny() (min, max interface{}) { 73 return BasicEnumImpl.MinMaxAny() 74 } 75 76 func (it Variant) MinValueString() string { 77 return BasicEnumImpl.MinValueString() 78 } 79 80 func (it Variant) MaxValueString() string { 81 return BasicEnumImpl.MaxValueString() 82 } 83 84 func (it Variant) MaxInt() int { 85 return BasicEnumImpl.MaxInt() 86 } 87 88 func (it Variant) MinInt() int { 89 return BasicEnumImpl.MinInt() 90 } 91 92 func (it Variant) RangesDynamicMap() map[string]interface{} { 93 return BasicEnumImpl.RangesDynamicMap() 94 } 95 96 func (it Variant) IsValueEqual(value byte) bool { 97 return byte(it) == value 98 } 99 100 func (it Variant) Format(format string) (compiled string) { 101 return BasicEnumImpl.Format(format, it) 102 } 103 104 func (it Variant) IsEnumEqual(enum enuminf.BasicEnumer) bool { 105 return it.Value() == enum.ValueByte() 106 } 107 108 func (it *Variant) IsAnyEnumsEqual(enums ...enuminf.BasicEnumer) bool { 109 for _, enum := range enums { 110 if it.IsEnumEqual(enum) { 111 return true 112 } 113 } 114 115 return false 116 } 117 118 func (it Variant) IsNameEqual(name string) bool { 119 return it.Name() == name 120 } 121 122 func (it Variant) IsAnyNamesOf(names ...string) bool { 123 for _, name := range names { 124 if it.IsNameEqual(name) { 125 return true 126 } 127 } 128 129 return false 130 } 131 132 func (it Variant) ValueByte() byte { 133 return byte(it) 134 } 135 136 func (it Variant) ValueInt() int { 137 return int(it) 138 } 139 140 func (it Variant) ValueInt8() int8 { 141 return int8(it) 142 } 143 144 func (it Variant) ValueInt16() int16 { 145 return int16(it) 146 } 147 148 func (it Variant) ValueInt32() int32 { 149 return int32(it) 150 } 151 152 func (it Variant) ValueString() string { 153 return it.ToNumberString() 154 } 155 156 func (it Variant) IsValid() bool { 157 return it != 0 158 } 159 160 func (it Variant) IsInvalid() bool { 161 return it == 0 162 } 163 164 func (it Variant) NameValue() string { 165 return BasicEnumImpl.NameWithValue(it) 166 } 167 168 func (it Variant) ToNumberString() string { 169 return strconv.Itoa(it.ValueInt()) 170 } 171 172 func (it Variant) Name() string { 173 return BasicEnumImpl.ToEnumString(it.Value()) 174 } 175 176 func (it Variant) UnmarshallToValue(jsonUnmarshallingValue []byte) (byte, error) { 177 newEmpty := Variant(0) 178 err := corejson. 179 Deserialize. 180 UsingBytes( 181 jsonUnmarshallingValue, &newEmpty) 182 183 if err != nil { 184 return 0, err 185 } 186 187 return newEmpty.Value(), nil 188 } 189 190 func (it Variant) MarshalJSON() ([]byte, error) { 191 return BasicEnumImpl.ToEnumJsonBytes(it.Value()) 192 } 193 194 func (it *Variant) UnmarshalJSON(data []byte) error { 195 newEmpty := Variant(0) 196 err := corejson. 197 Deserialize. 198 UsingBytes( 199 data, &newEmpty) 200 201 if err == nil { 202 *it = newEmpty 203 } 204 205 return err 206 } 207 208 func (it Variant) String() string { 209 return BasicEnumImpl.ToEnumString(it.Value()) 210 } 211 212 func (it Variant) JsonString() string { 213 return BasicEnumImpl.JsonString(it) 214 } 215 216 func (it Variant) StringRangesPtr() *[]string { 217 return BasicEnumImpl.StringRangesPtr() 218 } 219 220 func (it Variant) StringRanges() []string { 221 return BasicEnumImpl.StringRanges() 222 } 223 224 func (it Variant) RangesInvalidMessage() string { 225 return BasicEnumImpl.RangesInvalidMessage() 226 } 227 228 func (it Variant) RangesInvalidErr() error { 229 return BasicEnumImpl.RangesInvalidErr() 230 } 231 232 func (it Variant) IsValidRange() bool { 233 return BasicEnumImpl.IsValidRange(it.Value()) 234 } 235 236 func (it Variant) IsInvalidRange() bool { 237 return !it.IsValidRange() 238 } 239 240 func (it Variant) Value() byte { 241 return byte(it) 242 } 243 244 func (it Variant) StringValue() string { 245 return strconv.Itoa(it.ValueInt()) 246 } 247 248 func (it Variant) HasIndexInStrings(sliceOfStrings ...string) (val string, isValid bool) { 249 if len(sliceOfStrings) == 0 { 250 return "", false 251 } 252 253 enumVal := it.ValueInt() 254 isValid = len(sliceOfStrings)-1 >= enumVal 255 256 if isValid { 257 return sliceOfStrings[enumVal], isValid 258 } 259 260 return "", false 261 } 262 263 // Add v + n 264 func (it Variant) Add(n byte) Variant { 265 return Variant(it.Value() + n) 266 } 267 268 // Subtract v - n 269 func (it Variant) Subtract(n byte) Variant { 270 return Variant(it.Value() - n) 271 } 272 273 func (it Variant) Is(n Variant) bool { 274 return it.Value() == n.Value() 275 } 276 277 // IsBetween val >= start && val <= end 278 func (it Variant) IsBetween(start, end byte) bool { 279 val := it.Value() 280 281 return val >= start && val <= end 282 } 283 284 // IsBetweenInt val >= start && val <= end 285 func (it Variant) IsBetweenInt(start, end int) bool { 286 val := it.Value() 287 288 return val >= byte(start) && val <= byte(end) 289 } 290 291 func (it Variant) IsEqual(n byte) bool { 292 return it.Value() == n 293 } 294 295 // IsGreater v.Value() > n 296 func (it Variant) IsGreater(n byte) bool { 297 return it.Value() > n 298 } 299 300 // IsGreaterEqual v.Value() >= n 301 func (it Variant) IsGreaterEqual(n byte) bool { 302 return it.Value() >= n 303 } 304 305 // IsLess v.Value() < n 306 func (it Variant) IsLess(n byte) bool { 307 return it.Value() < n 308 } 309 310 // IsLessEqual v.Value() <= n 311 func (it Variant) IsLessEqual(n byte) bool { 312 return it.Value() <= n 313 } 314 315 func (it Variant) IsEqualInt(n int) bool { 316 return it.Value() == byte(n) 317 } 318 319 // IsGreaterInt v.Value() > n 320 func (it Variant) IsGreaterInt(n int) bool { 321 return it.Value() > byte(n) 322 } 323 324 // IsGreaterEqualInt v.Value() >= n 325 func (it Variant) IsGreaterEqualInt(n int) bool { 326 return it.Value() >= byte(n) 327 } 328 329 // IsLessInt v.Value() < n 330 func (it Variant) IsLessInt(n int) bool { 331 return it.Value() < byte(n) 332 } 333 334 // IsLessEqualInt v.Value() <= n 335 func (it Variant) IsLessEqualInt(n int) bool { 336 return it.Value() <= byte(n) 337 } 338 339 func (it Variant) RangeNamesCsv() string { 340 return BasicEnumImpl.RangeNamesCsv() 341 } 342 343 func (it Variant) TypeName() string { 344 return BasicEnumImpl.TypeName() 345 } 346 347 func (it Variant) EnumType() enuminf.EnumTyper { 348 return BasicEnumImpl.EnumType() 349 } 350 351 func (it Variant) AsBasicEnumContractsBinder() enuminf.BasicEnumContractsBinder { 352 return &it 353 } 354 355 func (it Variant) ToPtr() *Variant { 356 return &it 357 }