programming-examples/ruby/Data_Structures/container.rb

59 lines
841 B
Ruby
Raw Normal View History

2019-11-15 12:59:38 +01:00
# This file contains the Ruby code from book of
# "Data Structures and Algorithms
# with Object-Oriented Design Patterns in Ruby"
# by Bruno R. Preiss.
#
# Copyright (c) 2004 by Bruno R. Preiss, P.Eng. All rights reserved.
class Container < AbstractObject
include ::Enumerable
def initialize
super
@count = 0
end
attr_reader :count
def purge
@count = 0
end
def empty?
count == 0
end
def full?
false
end
abstractmethod :iter
def each
i = iter
while i.more?
yield i.succ
end
end
def to_s
s = ""
each do |obj|
s << ", " if not s.empty?
s << obj.to_s
end
type.name + "{" + s + "}"
end
def accept(visitor)
assert { visitor.is_a?(Visitor) }
each do |obj|
break if visitor.done?
visitor.visit(obj)
end
end
end