| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- // package mod_num -- номер модуля
- package mod_num
- import (
- "fmt"
- "gitp78su.ipnodns.ru/svi/kern/v4/d0"
- )
- // AModNum -- номер модуля.
- type AModNum d0.Num
- // LModuleNum -- номер модуля.
- type LModuleNum struct {
- owner *d0.LOwner
- num AModNum // Номер модуля
- }
- var (
- nextNum AModNum // Следующий номер модуля
- block = d0.MutSafeMutex()
- )
- // LetModuleNum -- возвращает новый модуль номера.
- func LetModuleNum(owner *d0.LOwner) *LModuleNum {
- block.Lock()
- defer block.Unlock()
- sf := &LModuleNum{
- owner: owner,
- num: nextNum,
- }
- nextNum++
- return sf
- }
- // FromStr -- возвращает новый номер модуля из строки.
- func FromStr(txtNumMod *d0.LTxt) *d0.Result[*LModuleNum] {
- owner := txtNumMod.Owner()
- txtNumModMut := d0.MutTxt(owner, txtNumMod.Get())
- resNum := txtNumModMut.Atoi()
- if resNum.IsErr() {
- err := d0.LetErr(owner, "FromStr(): strNumMod(%q) not nu,ber, err=\n\t%w", txtNumModMut.Get(), resNum.Err())
- return d0.ResErr[*LModuleNum](err)
- }
- sf := &LModuleNum{
- owner: owner,
- num: AModNum(resNum.Ok()),
- }
- return d0.ResOk(sf)
- }
- // Num -- получить номер модуля.
- func (sf *LModuleNum) Num() AModNum {
- return sf.num
- }
- // Get -- внутренняя строка модуля.
- func (sf *LModuleNum) Get() d0.Txt {
- return d0.LetTxt(sf.owner, "%v", sf.num).Get()
- }
- // String -- строковое представление номера модуля.
- func (sf *LModuleNum) String() string {
- return fmt.Sprint(sf.num)
- }
|