github.com/whatap/golib@v0.0.22/util/compare/CompareUtil.go (about)

     1  package compare
     2  
     3  import (
     4  	"strings"
     5  )
     6  
     7  func CompareToBytes(l []byte, r []byte) int {
     8  	switch {
     9  	case l == nil && r == nil:
    10  		return 0
    11  	case l == nil:
    12  		return -1
    13  	case r == nil:
    14  		return 1
    15  	}
    16  	l_sz := len(l)
    17  	r_sz := len(r)
    18  	for i := 0; i < l_sz && i < r_sz; i++ {
    19  		if l[i] > r[i] {
    20  			return 1
    21  		}
    22  		if l[i] < r[i] {
    23  			return -1
    24  		}
    25  	}
    26  	return l_sz - r_sz
    27  }
    28  func CompareToShorts(l []int16, r []int16) int {
    29  	switch {
    30  	case l == nil && r == nil:
    31  		return 0
    32  	case l == nil:
    33  		return -1
    34  	case r == nil:
    35  		return 1
    36  	}
    37  	l_sz := len(l)
    38  	r_sz := len(r)
    39  	for i := 0; i < l_sz && i < r_sz; i++ {
    40  		if l[i] > r[i] {
    41  			return 1
    42  		}
    43  		if l[i] < r[i] {
    44  			return -1
    45  		}
    46  	}
    47  	return l_sz - r_sz
    48  }
    49  func CompareToInts(l []int32, r []int32) int {
    50  	switch {
    51  	case l == nil && r == nil:
    52  		return 0
    53  	case l == nil:
    54  		return -1
    55  	case r == nil:
    56  		return 1
    57  	}
    58  	l_sz := len(l)
    59  	r_sz := len(r)
    60  	for i := 0; i < l_sz && i < r_sz; i++ {
    61  		if l[i] > r[i] {
    62  			return 1
    63  		}
    64  		if l[i] < r[i] {
    65  			return -1
    66  		}
    67  	}
    68  	return l_sz - r_sz
    69  }
    70  func CompareToFloats(l []float32, r []float32) int {
    71  	switch {
    72  	case l == nil && r == nil:
    73  		return 0
    74  	case l == nil:
    75  		return -1
    76  	case r == nil:
    77  		return 1
    78  	}
    79  	l_sz := len(l)
    80  	r_sz := len(r)
    81  	for i := 0; i < l_sz && i < r_sz; i++ {
    82  		if l[i] > r[i] {
    83  			return 1
    84  		}
    85  		if l[i] < r[i] {
    86  			return -1
    87  		}
    88  	}
    89  	return l_sz - r_sz
    90  }
    91  
    92  func CompareToLongs(l []int64, r []int64) int {
    93  	switch {
    94  	case l == nil && r == nil:
    95  		return 0
    96  	case l == nil:
    97  		return -1
    98  	case r == nil:
    99  		return 1
   100  	}
   101  	l_sz := len(l)
   102  	r_sz := len(r)
   103  	for i := 0; i < l_sz && i < r_sz; i++ {
   104  		if l[i] > r[i] {
   105  			return 1
   106  		}
   107  		if l[i] < r[i] {
   108  			return -1
   109  		}
   110  	}
   111  	return l_sz - r_sz
   112  }
   113  
   114  func CompareToDoubles(l []float64, r []float64) int {
   115  	switch {
   116  	case l == nil && r == nil:
   117  		return 0
   118  	case l == nil:
   119  		return -1
   120  	case r == nil:
   121  		return 1
   122  	}
   123  	l_sz := len(l)
   124  	r_sz := len(r)
   125  	for i := 0; i < l_sz && i < r_sz; i++ {
   126  		if l[i] > r[i] {
   127  			return 1
   128  		}
   129  		if l[i] < r[i] {
   130  			return -1
   131  		}
   132  	}
   133  	return l_sz - r_sz
   134  }
   135  
   136  func CompareToStrings(l []string, r []string) int {
   137  	switch {
   138  	case l == nil && r == nil:
   139  		return 0
   140  	case l == nil:
   141  		return -1
   142  	case r == nil:
   143  		return 1
   144  	}
   145  	l_sz := len(l)
   146  	r_sz := len(r)
   147  	for i := 0; i < l_sz && i < r_sz; i++ {
   148  		rt := strings.Compare(l[i], r[i])
   149  		if rt != 0 {
   150  			return rt
   151  		}
   152  	}
   153  	return l_sz - r_sz
   154  //	
   155  //	l_sz := len(l)
   156  //	r_sz := len(r)
   157  //	for i := 0; i < l_sz && i < r_sz; i++ {
   158  //		if l[i] > r[i] {
   159  //			return 1
   160  //		}
   161  //		if l[i] < r[i] {
   162  //			return -1
   163  //		}
   164  //	}
   165  //	return l_sz - r_sz
   166  }
   167  
   168  func EqualBytes(l []byte, r []byte) bool {
   169  	return CompareToBytes(l, r) == 0
   170  }
   171  
   172  func EqualShorts(l []int16, r []int16) bool {
   173  	return CompareToShorts(l, r) == 0
   174  }
   175  
   176  func EqualInts(l []int32, r []int32) bool {
   177  	return CompareToInts(l, r) == 0
   178  }
   179  
   180  func EqualFloats(l []float32, r []float32) bool {
   181  	return CompareToFloats(l, r) == 0
   182  }
   183  
   184  func EqualLongs(l []int64, r []int64) bool {
   185  	return CompareToLongs(l, r) == 0
   186  }
   187  
   188  func EqualDoubles(l []float64, r []float64) bool {
   189  	return CompareToDoubles(l, r) == 0
   190  }
   191  
   192  func EqualStrings(l []string, r []string) bool {
   193  	return CompareToStrings(l, r) == 0
   194  }
   195  
   196  func CompareToString(l, r string) int {
   197  //	if l == r {
   198  //		return 0
   199  //	} else {
   200  //		if len(l) > len(r) {
   201  //			return 1
   202  //		} else {
   203  //			return -1
   204  //		}
   205  //
   206  //	}
   207  //	
   208  	return strings.Compare(l, r)
   209  		
   210  }
   211  
   212  func CompareToInt(l, r int) int {
   213  	if l == r {
   214  		return 0
   215  	} else {
   216  		if l > r {
   217  			return 1
   218  		} else {
   219  			return -1
   220  		}
   221  
   222  	}
   223  }
   224  
   225  func CompareToLong(l, r int64) int {
   226  	if l == r {
   227  		return 0
   228  	} else {
   229  		if l > r {
   230  			return 1
   231  		} else {
   232  			return -1
   233  		}
   234  	}
   235  }
   236  
   237  func CompareToFloat(l, r float32) int {
   238  	if l == r {
   239  		return 0
   240  	} else {
   241  		if l > r {
   242  			return 1
   243  		} else {
   244  			return -1
   245  		}
   246  
   247  	}
   248  }
   249  
   250  func CompareToDouble(l, r float64) int {
   251  	if l == r {
   252  		return 0
   253  	} else {
   254  		if l > r {
   255  			return 1
   256  		} else {
   257  			return -1
   258  		}
   259  
   260  	}
   261  }