owner.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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,
  17. U def_spec_base.TxtConstraint](id T, name U) *LOwner {
  18. helpers.If(id == 0).Hassert("LetOwner(): id==0")
  19. helpers.If(name == "").Hassert("LetOwner(): id=%v, name is empty", id)
  20. sf := &LOwner{
  21. id: OwnerId(id),
  22. name: def_spec_base.Txt(name),
  23. }
  24. return sf
  25. }
  26. // Id -- получить значение ID владельца.
  27. func (sf *LOwner) Id() OwnerId {
  28. return sf.id
  29. }
  30. // Name -- получить имя владельца.
  31. func (sf *LOwner) Name() def_spec_base.Txt {
  32. return sf.name
  33. }
  34. const (
  35. strOut = `LOwner(
  36. id(%v)
  37. name(%v)
  38. )`
  39. )
  40. // String -- получить строковое представление ID владельца.
  41. func (sf *LOwner) String() string {
  42. return fmt.Sprintf(strOut, sf.id, sf.name)
  43. }
  44. // Pass -- возвращает паспорт владельца
  45. func (sf *LOwner) Pass() *OwnerPass {
  46. pass := &OwnerPass{
  47. ownerDest: sf,
  48. ownerCur: sf,
  49. }
  50. return pass
  51. }