owner.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // package owner -- описатель владельца
  2. package owner
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base"
  6. "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers"
  7. )
  8. // OwnerId -- ID владельца.
  9. type OwnerId def_spec_base.Num
  10. // LOwner -- неизменяемый владелец.
  11. type LOwner struct {
  12. id OwnerId // Хранимое значение ID владельца
  13. name def_spec_base.Txt // Имя владельца
  14. }
  15. // LetOwner -- получить нового неизменяемого владельца.
  16. func LetOwner[T def_spec_base.NumConstraint, U def_spec_base.TxtConstraint](id T, name U) *LOwner {
  17. helpers.If(id == 0).Hassert("LetOwner(): id==0")
  18. helpers.If(name == "").Hassert("LetOwner(): id=%v, name is empty", id)
  19. sf := &LOwner{
  20. id: OwnerId(id),
  21. name: def_spec_base.Txt(name),
  22. }
  23. return sf
  24. }
  25. // Id -- получить значение ID владельца.
  26. func (sf *LOwner) Id() OwnerId {
  27. return sf.id
  28. }
  29. // Name -- получить имя владельца.
  30. func (sf *LOwner) Name() def_spec_base.Txt {
  31. return sf.name
  32. }
  33. const (
  34. strOut = `LOwner(
  35. id(%v)
  36. name(%v)
  37. )`
  38. )
  39. // String -- получить строковое представление ID владельца.
  40. func (sf *LOwner) String() string {
  41. return fmt.Sprintf(strOut, sf.id, sf.name)
  42. }
  43. // Pass -- возвращает паспорт владельца
  44. func (sf *LOwner) Pass() *OwnerPass {
  45. pass := &OwnerPass{
  46. ownerDest: sf,
  47. ownerCur: sf,
  48. }
  49. return pass
  50. }