| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // package quark_byte -- кварк байт
- package quark_byte
- import (
- "fmt"
- "strconv"
- . "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 -- получить значение
- func (sf *QByte[T]) Get() byte {
- return sf.Val().Get()
- }
- // Set -- установить значение
- func Set(sf *QByte[quark_val.Mut], val byte) {
- quark_val.Set(sf.Val(), val)
- }
- // ToInt -- представить значение как int
- func (sf *QByte[T]) ToInt() int {
- return int(sf.Val().Get())
- }
- // ToStr -- представить значение как строку из одного байта
- func (sf *QByte[T]) ToStr() string {
- return fmt.Sprint(sf.Val().Get())
- }
- // FromInt -- установить значение из int
- func FromInt(sf *QByte[quark_val.Mut], v int) {
- Hassert(v >= 0 && v <= 255, "QByte.FromInt(): значение вне диапазона байта")
- quark_val.Set(sf.Val(), byte(v))
- }
- // FromStr -- установить значение из строки (как из целого числа)
- func FromStr(sf *QByte[quark_val.Mut], s string) {
- // Конвертируем строку в int и используем FromInt для всех проверок
- v, err := strconv.Atoi(s)
- Hassert(err == nil, "QByte.FromStr(): не удалось преобразовать строку в int, err=\n\t%v", err)
- FromInt(sf, v)
- }
|