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  }