arch_use_group.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // package arch_use_group -- группа вариантов использования
  2. package arch_use_group
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  7. "gitp78su.ipnodns.ru/svi/goarch/lev1/arch_node"
  8. "gitp78su.ipnodns.ru/svi/kern/v3"
  9. "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes"
  10. )
  11. // ArchUseCaseGroup -- группа вариантов использования
  12. type ArchUseCaseGroup struct {
  13. *arch_node.ArchNode
  14. }
  15. var (
  16. hassert = kern.GetFnHassert()
  17. )
  18. // NewArchUseCaseGroup -- возвращает новую группу вариантов использования
  19. func NewArchUseCaseGroup(parentId alias.ArchId) *ArchUseCaseGroup {
  20. sf := &ArchUseCaseGroup{
  21. ArchNode: arch_node.NewArchNode("use_case_group", parentId),
  22. }
  23. sf.SelfCheck()
  24. _ = types.IArchUseGroup(sf)
  25. return sf
  26. }
  27. // Len -- заглушка на длину
  28. func (sf *ArchUseCaseGroup) Len() int {
  29. return 0
  30. }
  31. // InvarCheck -- проверка инвариантов
  32. func (sf *ArchUseCaseGroup) InvarCheck() ktypes.Option[error] {
  33. if sf.ArchNode == nil {
  34. err := fmt.Errorf("ArchUseCaseGroup.InvarCheck(): ArchNode==nil")
  35. return ktypes.NewSome(err)
  36. }
  37. return ktypes.NewNone[error]()
  38. }
  39. // Size -- возвращает размер
  40. //
  41. //go:fix inline
  42. // func (sf *ArchUseCaseGroup) Size() types.IViewSize {
  43. // return sf.Size_
  44. // }
  45. // Links -- заглушка на связи между объектами
  46. //
  47. //go:fix inline
  48. func (sf *ArchUseCaseGroup) Links() []alias.ArchId {
  49. return []alias.ArchId{sf.Id()}
  50. }
  51. // Check -- заглушка под проверку
  52. func (sf *ArchUseCaseGroup) SelfCheck() {
  53. hassert(sf.ArchNode != nil, "NewUseGroup(): IElemBase is nil")
  54. }