| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // 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
- }
|