quark_int.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // package quark_int -- кварк целое.
  2. package quark_int
  3. import (
  4. "strconv"
  5. mKh "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. //
  33. //go:fix inline
  34. func (sf *QInt[M]) Get() int {
  35. return sf.Val().Get()
  36. }
  37. // Set -- установить значение.
  38. //
  39. //go:fix inline
  40. func Set(sf *QInt[quark_val.Mut], v int) {
  41. quark_val.Set(sf.Val(), v)
  42. }
  43. // FromStr -- установить значение из строки.
  44. //
  45. //go:fix inline
  46. func FromStr(sf *QInt[quark_val.Mut], s string) {
  47. iVal, err := strconv.Atoi(s)
  48. mKh.Hassert(err == nil, "QInt.FromStr(): не удалось преобразовать строку(%v) в int, err=\n\t%v",
  49. s, err)
  50. quark_val.Set(sf.Val(), iVal)
  51. }