// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
// All rights reserved.

// util.go
package kern

func FixAnyNumber(v any) (fixed any) {
	switch unboxed := v.(type) {
	case int:
		fixed = int64(unboxed)
	case int8:
		fixed = int64(unboxed)
	case int16:
		fixed = int64(unboxed)
	case int32:
		fixed = int64(unboxed)
	case uint:
		fixed = int64(unboxed)
	case uint8:
		fixed = int64(unboxed)
	case uint16:
		fixed = int64(unboxed)
	case uint32:
		fixed = int64(unboxed)
	case uint64:
		if unboxed <= MaxUint64Allowed {
			fixed = int64(unboxed)
		} else {
			fixed = float64(unboxed)
		}
	case float32:
		fixed = float64(unboxed)
	default:
		fixed = v
	}
	return
}
