1
0

tree.go 554 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package model
  2. type Attribute interface {
  3. String() string
  4. }
  5. type Leaf interface {
  6. Name() LeafName
  7. Attr(AttrName, ...Attribute) Attribute
  8. }
  9. type Node interface {
  10. Leaf
  11. Child(int) Leaf
  12. IndexOf(Leaf) int
  13. NofChild() int
  14. }
  15. type Model interface {
  16. Root() Node
  17. NewReader(...Reader) Reader
  18. NewWriter(...Writer) Writer
  19. }
  20. type Reader interface {
  21. InitFrom(Reader)
  22. Base() Model
  23. }
  24. type Writer interface {
  25. InitFrom(Writer)
  26. Base() Model
  27. Pos(...Leaf) Leaf
  28. Write(Leaf)
  29. WritePos(Leaf) Leaf
  30. Attr(AttrName, interface{})
  31. }
  32. var ModelFactory func() Model