quark_int.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // package quark_int -- кварк целое
  2. package quark_int
  3. import (
  4. "strconv"
  5. . "gitp78su.ipnodns.ru/svi/kern/v4/lev0/helpers"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
  7. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
  8. )
  9. // QInt -- кварк целое
  10. type QInt[M quark_val.CMod] struct {
  11. *quark_base.QBase[M, int]
  12. }
  13. // NewQInt -- создать новый фиксированный кварк целое
  14. func NewQInt(v int) *QInt[quark_val.Fix] {
  15. optMass := quark_base.QBaseOptMass[quark_val.Fix, int](8)
  16. optVal := quark_base.QBaseOptVal(v)
  17. sf := &QInt[quark_val.Fix]{
  18. QBase: quark_base.NewQBase(optMass, optVal),
  19. }
  20. return sf
  21. }
  22. // NewQIntMut -- создать новый изменяемый кварк целое
  23. func NewQIntMut(v int) *QInt[quark_val.Mut] {
  24. optMass := quark_base.QBaseOptMass[quark_val.Mut, int](8)
  25. optVal := quark_base.QBaseOptValMut(v)
  26. sf := &QInt[quark_val.Mut]{
  27. QBase: quark_base.NewQBaseMut(optMass, optVal),
  28. }
  29. return sf
  30. }
  31. // Get -- возвращает хранимое значение
  32. func (sf *QInt[M]) Get() int {
  33. return sf.Val().Get()
  34. }
  35. // Set -- установить значение
  36. func Set(sf *QInt[quark_val.Mut], v int) {
  37. quark_val.Set(sf.Val(), v)
  38. }
  39. // FromStr -- установить значение из строки
  40. func FromStr(sf *QInt[quark_val.Mut], s string) {
  41. iVal, err := strconv.Atoi(s)
  42. Hassert(err == nil, "QInt.FromStr(): не удалось преобразовать строку(%v) в int, err=\n\t%v",
  43. s, err)
  44. quark_val.Set(sf.Val(), iVal)
  45. }