// package quark_byte -- кварк байт. package quark_byte import ( "fmt" "strconv" mKh "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base" "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val" ) // QByte -- кварк байт. type QByte[M quark_val.CMod] struct { *quark_base.QBase[M, byte] // базовый кварк } // NewQByte -- создать фиксированный кварк байт. func NewQByte(val byte) *QByte[quark_val.Fix] { optMass := quark_base.QBaseOptMass[quark_val.Fix, byte](1) optVal := quark_base.QBaseOptVal(val) sf := &QByte[quark_val.Fix]{ QBase: quark_base.NewQBase(optMass, optVal), } return sf } // NewQByteMut -- создать мутируемый кварк байт. func NewQByteMut(val byte) *QByte[quark_val.Mut] { optMass := quark_base.QBaseOptMass[quark_val.Mut, byte](1) optVal := quark_base.QBaseOptValMut(val) sf := &QByte[quark_val.Mut]{ QBase: quark_base.NewQBaseMut(optMass, optVal), } return sf } // Get -- получить значение. // //go:fix inline func (sf *QByte[T]) Get() byte { return sf.Val().Get() } // Set -- установить значение. // //go:fix inline func Set(sf *QByte[quark_val.Mut], val byte) { quark_val.Set(sf.Val(), val) } // ToInt -- представить значение как int. // //go:fix inline func (sf *QByte[T]) ToInt() int { return int(sf.Val().Get()) } // ToStr -- представить значение как строку из одного байта. // //go:fix inline func (sf *QByte[T]) ToStr() string { return fmt.Sprint(sf.Val().Get()) } // FromInt -- установить значение из int. func FromInt(sf *QByte[quark_val.Mut], v int) { mKh.Hassert(v >= 0 && v <= 255, "QByte.FromInt(): значение вне диапазона байта") quark_val.Set(sf.Val(), byte(v)) } // FromStr -- установить значение из строки (как из целого числа). // //go:fix inline func FromStr(sf *QByte[quark_val.Mut], s string) { // Конвертируем строку в int и используем FromInt для всех проверок v, err := strconv.Atoi(s) mKh.Hassert(err == nil, "QByte.FromStr(): не удалось преобразовать строку в int, err=\n\t%v", err) mKh.Hassert(v >= 0 && v <= 255, "QByte.FromInt(): значение вне диапазона байта") quark_val.Set(sf.Val(), byte(v)) }