gitlab.com/evatix-go/core@v1.3.55/coredata/corerange/MinMaxByte.go (about) 1 package corerange 2 3 import "gitlab.com/evatix-go/core/constants" 4 5 type MinMaxByte struct { 6 Min, Max byte 7 } 8 9 func (it *MinMaxByte) CreateMinMaxInt() *MinMaxInt { 10 return &MinMaxInt{ 11 Min: int(it.Min), 12 Max: int(it.Min), 13 } 14 } 15 16 func (it *MinMaxByte) CreateRangeInt(rawString, separator string) *RangeInt { 17 return NewRangeInt( 18 rawString, 19 separator, 20 it.CreateMinMaxInt()) 21 } 22 23 func (it *MinMaxByte) CreateRangeInt8(rawString, separator string) *RangeInt8 { 24 return NewRangeInt( 25 rawString, 26 separator, 27 it.CreateMinMaxInt()). 28 CreateRangeInt8() 29 } 30 31 func (it *MinMaxByte) CreateRangeInt16(rawString, separator string) *RangeInt16 { 32 return NewRangeInt( 33 rawString, 34 separator, 35 it.CreateMinMaxInt()). 36 CreateRangeInt16() 37 } 38 39 func (it *MinMaxByte) Difference() byte { 40 return it.Max - it.Min 41 } 42 43 func (it *MinMaxByte) DifferenceAbsolute() byte { 44 diff := it.Difference() 45 46 if diff < 0 { 47 return diff 48 } 49 50 return diff 51 } 52 53 func (it *MinMaxByte) IsMinEqual(val byte) bool { 54 return it != nil && it.Min == val 55 } 56 57 func (it *MinMaxByte) IsMinAboveEqual(val byte) bool { 58 return it != nil && it.Min >= val 59 } 60 61 func (it *MinMaxByte) IsMinAbove(val byte) bool { 62 return it != nil && it.Min > val 63 } 64 65 func (it *MinMaxByte) IsMinLess(val byte) bool { 66 return it != nil && it.Min < val 67 } 68 69 func (it *MinMaxByte) IsMinLessEqual(val byte) bool { 70 return it != nil && it.Min <= val 71 } 72 73 func (it *MinMaxByte) IsMaxEqual(val byte) bool { 74 return it != nil && it.Max == val 75 } 76 77 func (it *MinMaxByte) IsMaxAboveEqual(val byte) bool { 78 return it != nil && it.Max >= val 79 } 80 81 func (it *MinMaxByte) IsMaxAbove(val byte) bool { 82 return it != nil && it.Max > val 83 } 84 85 func (it *MinMaxByte) IsMaxLess(val byte) bool { 86 return it != nil && it.Max < val 87 } 88 89 func (it *MinMaxByte) IsMaxLessEqual(val byte) bool { 90 return it != nil && it.Max <= val 91 } 92 93 func (it *MinMaxByte) RangeLengthInt() int { 94 return int(it.RangeLength()) 95 } 96 97 // RangeLength (5 - 3 = 2) + 1 98 func (it *MinMaxByte) RangeLength() byte { 99 return it.DifferenceAbsolute() + 1 100 } 101 102 // RangesInt 103 // 104 // returns empty integers if IsInvalid 105 // return range int values 106 func (it *MinMaxByte) RangesInt() []int { 107 actualRanges := it.Ranges() 108 rangesIntegers := make( 109 []int, 110 it.RangeLengthInt()) 111 112 for i, actualValue := range actualRanges { 113 rangesIntegers[i] = int(actualValue) 114 } 115 116 return rangesIntegers 117 } 118 119 // Ranges 120 // 121 // returns empty bytes if IsInvalid 122 // return range int values 123 func (it *MinMaxByte) Ranges() []byte { 124 length := it.RangeLength() 125 start := it.Min 126 slice := make( 127 []byte, 128 constants.Zero, 129 length) 130 131 var i byte 132 133 for i = 0; i < length; i++ { 134 slice[i] = start + i 135 } 136 137 return slice 138 } 139 140 // IsWithinRange r.Min >= value && value <= r.Max 141 func (it *MinMaxByte) IsWithinRange(value byte) bool { 142 return it.Min >= value && value <= it.Max 143 } 144 145 // IsInvalidValue !r.IsWithinRange(value) 146 func (it *MinMaxByte) IsInvalidValue(value byte) bool { 147 return !it.IsWithinRange(value) 148 } 149 150 func (it MinMaxByte) IsOutOfRange(value byte) bool { 151 return !it.IsWithinRange(value) 152 } 153 154 func (it *MinMaxByte) ClonePtr() *MinMaxByte { 155 if it == nil { 156 return nil 157 } 158 159 return &MinMaxByte{ 160 Min: it.Min, 161 Max: it.Max, 162 } 163 } 164 165 func (it *MinMaxByte) Clone() MinMaxByte { 166 return MinMaxByte{ 167 Min: it.Min, 168 Max: it.Max, 169 } 170 }