// package def_num -- внутреннее число package def_num import ( "encoding/binary" "fmt" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_fn" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/table/owner" "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers" ) // LNum -- внутренне неизменяемое число. type LNum struct { *owner.OwnerPass val def_spec_base.Num } // LetNum -- возвращает новое внутреннее неизменяемое число. func LetNum[T def_spec_base.NumConstraint](owner *owner.LOwner, val T) *LNum { helpers.If(owner == nil).Hassert("LetNum(): LOwner==nil") sf := &LNum{ OwnerPass: owner.Pass(), val: def_spec_base.Num(val), } return sf } // Get -- возвращает хранимое значение числа. func (sf *LNum) Get() def_spec_base.Num { sf.CheckOwner() return sf.val } // Txt -- возвращает как текст. func (sf *LNum) Txt() def_spec_base.Txt { sf.CheckOwner() return def_spec_fn.Sprintf("%v", sf.val) } // ToByte -- возвращает как срез байт. func (sf *LNum) ToByte() []byte { sf.CheckOwner() buf := make([]byte, 8) binary.BigEndian.PutUint64(buf, uint64(sf.val)) return buf } // Int -- возвращает целое func (sf *LNum) Int() int { sf.CheckOwner() return int(sf.val) } // Num -- возвращает как число func (sf *LNum) Num() def_spec_base.Num { sf.CheckOwner() return sf.val } // String -- возвращает строку func (sf *LNum) String() string { sf.CheckOwner() return fmt.Sprintf("%v", sf.val) } // Let -- возвращает неизменяемое значение func (sf *LNum) Let() *LNum { sf.CheckOwner() return sf }