quark_int.go 1.6 KB

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