// Copyright 2024 Patial Tech (Ankit Patial). // // This file is part of code.patial.tech/go/appcore, which is MIT licensed. // See http://opensource.org/licenses/MIT package ptr import "strings" //go:fix inline func Ref[T string | bool | Num](v T) *T { return new(v) } func Deref[T any](v *T) T { if v == nil { var a T return a } return *v } //go:fix inline func Bool(v bool) *bool { return new(v) } func GetBool(v *bool) bool { return Deref(v) } //go:fix inline func Str(v string) *string { return new(v) } func GetStr(v *string) string { return Deref(v) } func StrTrim(v *string) *string { if v == nil { return nil } *v = strings.TrimSpace(*v) return v } type Num interface { uint8 | int8 | uint16 | int16 | uint32 | int32 | uint64 | int64 | uint | int | float32 | float64 } //go:fix inline func Number[T Num](v T) *T { return new(v) } func GetNumber[T Num](v *T) T { return Deref(v) }