quark_str.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // package quark_str -- кварк строки.
  2. package quark_str
  3. import (
  4. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/defs"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_base"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/lev0/quark/quark_val"
  7. )
  8. // QStr -- кварк строки.
  9. type QStr[M quark_val.CMod] struct {
  10. *quark_base.QBase[M, defs.Str]
  11. }
  12. // NewQStr -- создает фиксированную новую кварк строку.
  13. func NewQStr(val defs.Str) *QStr[quark_val.Fix] {
  14. optMass := quark_base.QBaseOptMass[quark_val.Fix, defs.Str](len(val))
  15. optVal := quark_base.QBaseOptVal(val)
  16. sf := &QStr[quark_val.Fix]{
  17. QBase: quark_base.NewQBase(optMass, optVal),
  18. }
  19. return sf
  20. }
  21. // NewQStrMut -- создает мутабельную новую кварк строку.
  22. func NewQStrMut(val defs.Str) *QStr[quark_val.Mut] {
  23. optMass := quark_base.QBaseOptMass[quark_val.Mut, defs.Str](len(val))
  24. optVal := quark_base.QBaseOptValMut(val)
  25. sf := &QStr[quark_val.Mut]{
  26. QBase: quark_base.NewQBaseMut(optMass, optVal),
  27. }
  28. return sf
  29. }
  30. // Get -- возвращает хранимое значение.
  31. //
  32. //go:fix inline
  33. func (sf *QStr[M]) Get() defs.Str {
  34. return sf.Val().Get()
  35. }
  36. // Set -- устанавливает хранимое значение.
  37. //
  38. //go:fix inline
  39. func Set(sf *QStr[quark_val.Mut], val defs.Str) {
  40. quark_val.Set(sf.Val(), val)
  41. }