53 lines
880 B
Go
53 lines
880 B
Go
package cast
|
|
|
|
import "math"
|
|
|
|
// UintToInt converts a uint to an int, handling potential overflow
|
|
func UintToInt(value uint) int {
|
|
if value <= math.MaxInt {
|
|
return int(value)
|
|
}
|
|
return math.MaxInt
|
|
}
|
|
|
|
// UIntToUInt16 converts a uint to an uint16, handling potential overflow
|
|
func UIntToUInt16(value uint) uint16 {
|
|
if value <= math.MaxUint16 {
|
|
return uint16(value)
|
|
}
|
|
return math.MaxUint16
|
|
}
|
|
|
|
// IntToUint converts an int to a uint, handling negative values
|
|
func IntToUint(value int) uint {
|
|
if value < 0 {
|
|
return 0
|
|
}
|
|
return uint(value)
|
|
}
|
|
|
|
func UintToIntPtr(value *uint) *int {
|
|
if value == nil {
|
|
return nil
|
|
}
|
|
return Ptr(UintToInt(*value))
|
|
}
|
|
|
|
func IntToUintPtr(value *int) *uint {
|
|
if value == nil {
|
|
return nil
|
|
}
|
|
return Ptr(IntToUint(*value))
|
|
}
|
|
|
|
func Ptr[T any](v T) *T {
|
|
return &v
|
|
}
|
|
|
|
func Val[T any](v *T, def T) T {
|
|
if v == nil {
|
|
return def
|
|
}
|
|
return *v
|
|
}
|