/src/lib/iterator/internal/iterator_on_avl_set.e

http://github.com/tybor/Liberty · Specman e · 62 lines · 50 code · 12 blank · 0 comment · 1 complexity · 004f65beaaf869c923d40a2611431bfa MD5 · raw file

  1. class ITERATOR_ON_AVL_SET[E_]
  2. inherit
  3. ITERATOR[E_]
  4. insert
  5. AVL_TREE_ITERATOR[E_]
  6. create {ABSTRACT_AVL_SET}
  7. make
  8. feature {ANY}
  9. start
  10. do
  11. if set.root /= Void then
  12. generation := iterable_generation
  13. go_first(set.root)
  14. end
  15. end
  16. is_off: BOOLEAN
  17. do
  18. Result := cur = Void
  19. end
  20. item: E_
  21. local
  22. node: ABSTRACT_AVL_SET_NODE[E_]
  23. do
  24. node ::= cur
  25. Result := node.item
  26. end
  27. next
  28. do
  29. go_next
  30. end
  31. feature {}
  32. make (a_set: like set)
  33. require
  34. a_set /= Void
  35. do
  36. set := a_set
  37. nodes := new_nodes
  38. start
  39. ensure
  40. set = a_set
  41. end
  42. set: ABSTRACT_AVL_SET[E_]
  43. feature {ANY}
  44. iterable_generation: INTEGER
  45. do
  46. Result := set.generation
  47. end
  48. invariant
  49. set /= Void
  50. end -- class ITERATOR_ON_AVL_SET