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