diff --git a/trunk/ripnews/set/intspan.rb b/trunk/ripnews/set/intspan.rb index 536d6a3..a947784 100644 --- a/trunk/ripnews/set/intspan.rb +++ b/trunk/ripnews/set/intspan.rb @@ -1,4 +1,4 @@ -# $Dwarf: intspan.rb,v 1.15 2004/06/16 08:13:35 ward Exp $ +# $Dwarf: intspan.rb,v 1.16 2005/03/09 14:22:52 ward Exp $ # $Source$ # @@ -51,8 +51,8 @@ def copy(set_spec) when "Array" print "copy: Calling _copy_array\n" if Debuglevel > 0 _copy_array(set_spec) - when "Set::Intspan" - print "copy: Calling _copy_set\n" + when "Set::IntSpan" + print "copy: Calling _copy_set\n" if Debuglevel > 0 _copy_set(set_spec) when "Hash" print "copy: Calling _copy_set\n" @@ -62,16 +62,18 @@ def copy(set_spec) end end -def _copy_empty # makes @set the empty se - @set = { "negInf" => false } - @set["posInf"] = false +def _copy_empty # makes @set the empty set + @set = {} + set_neg_inf(false) + set_pos_inf(false) @set["edges"] = [] @set["run"] = [] end def _copy_array(array) # copies an array into @set - @set["negInf"] = false - @set["posInf"] = false + _copy_empty + set_neg_inf(false) + set_pos_inf(false) #print "scary thingy gets called!!!\n" edges = [] @@ -90,14 +92,14 @@ def _copy_array(array) # copies an array into @set end def _copy_set(src) # copies one set to another - @set["negInf"] = src.neg_inf? - @set["posInf"] = src.pos_inf? + _copy_empty + set_neg_inf(src.neg_inf?) + set_pos_inf(src.pos_inf?) @set["edges"] = src.edges @set["run"] = [] end def _copy_run_list(runlist) - _copy_empty runlist.gsub!(/\s|_/, '') @@ -256,7 +258,7 @@ def run_list end def elements - if (@set["negInf"] == true or @set["posInf"] == true) + if (neg_inf? or pos_inf?) print "Set::IntSpan::elements: infinite set\n" exit end @@ -281,13 +283,13 @@ def union(set_spec) b = _real_set(set_spec) s = IntSpan.new - s.set_neg_inf(@set["negInf"] || b.neg_inf?) + s.set_neg_inf(neg_inf? || b.neg_inf?) eA = @set["edges"] eB = b.edges eS = s.edges - inA = @set["negInf"] + inA = neg_inf? inB = b.neg_inf? iA = 0 @@ -317,7 +319,7 @@ def union(set_spec) iA < eA.length and (! inB) and eS.concat(eA[iA..eA.length]) iB < eB.length and (! inA) and eS.concat(eB[iB..eB.length]) - s.set_pos_inf(@set["posInf"] || b.pos_inf?) + s.set_pos_inf(pos_inf? || b.pos_inf?) s.set_edges(eS) return s @@ -327,13 +329,13 @@ def intersect(set_spec) b = _real_set(set_spec) s = IntSpan.new - s.set_neg_inf(@set["negInf"] && b.neg_inf?) + s.set_neg_inf(neg_inf? && b.neg_inf?) eA = @set["edges"] eB = b.edges eS = s.edges - inA = @set["negInf"] + inA = neg_inf? inB = b.neg_inf? iA = 0 @@ -363,7 +365,7 @@ def intersect(set_spec) iA < eA.length and inB and eS.concat(eA[iA..eA.length]) iB < eB.length and inA and eS.concat(eB[iB..eB.length]) - s.set_neg_inf(@set["posInf"] && b.pos_inf?) + s.set_neg_inf(pos_inf? && b.pos_inf?) s.set_edges(eS) return s end @@ -372,13 +374,13 @@ def diff (set_spec) b = _real_set(set_spec) s = IntSpan.new - s.set_neg_inf(@set["negInf"] && ! b.neg_inf?) + s.set_neg_inf(neg_inf? && ! b.neg_inf?) eA = @set["edges"] eB = b.edges eS = s.edges - inA = @set["negInf"] + inA = neg_inf? inB = b.neg_inf? iA = 0 @@ -410,7 +412,7 @@ def diff (set_spec) s.set_edges(eS) - s.set_pos_inf(@set["posInf"] && ! b.pos_inf?) + s.set_pos_inf(pos_inf? && ! b.pos_inf?) return s end @@ -418,7 +420,7 @@ def xor(set_spec) b = _real_set(set_spec) s = IntSpan.new - s.set_neg_inf(@set["negInf"] ^ b.neg_inf?) + s.set_neg_inf(neg_inf? ^ b.neg_inf?) eA = @set["edges"] eB = b.edges @@ -446,7 +448,7 @@ def xor(set_spec) iA < eA.length and eS.concat(eA[iA..eA.length]) iB < eB.length and eS.concat(eB[iB..eB.length]) - s.set_pos_inf(@set["posInf"] ^ b.pos_inf?) + s.set_pos_inf(pos_inf? ^ b.pos_inf?) s.set_edges(eS) return s end @@ -498,9 +500,9 @@ def equal(set_spec) b = _real_set(set_spec) print "a\n" - @set["negInf"] == b.neg_inf? or return false + neg_inf? == b.neg_inf? or return false print "b\n" - @set["posInf"] == b.pos_inf? or return false + pos_inf? == b.pos_inf? or return false aEdge = @set["edges"] bEdge = b.edges @@ -523,7 +525,7 @@ end def cardinality - (@set["negInf"] or @set["posInf"]) and return -1 + (neg_inf? or pos_inf?) and return -1 car = 0 edges = @set["edges"] @@ -546,7 +548,7 @@ def empty? end def finite - if @set["negInf"] == false and @set["posInf"] == false + if ! neg_inf? and ! pos_inf? return true end return false @@ -577,15 +579,15 @@ def set_pos_inf(posInf) end def infinite - @set["negInf"] or @set["posInf"] + return neg_inf? || pos_inf? end def universal - @set["negInf"] and not @set["edges"].length > 0 and @set["posInf"] + neg_inf? and not @set["edges"].length > 0 and pos_inf? end def member(n) - inSet = @set["negInf"] + inSet = neg_inf? edge = @set["edges"] for i in (0...edge.length) @@ -602,7 +604,7 @@ def member(n) end def insert(n) - inSet = @set["negInf"] + inSet = neg_inf? edge = @set["edges"] if (edge.length == 0) @@ -657,7 +659,7 @@ end def remove(n) n or return - inSet = @set["negInf"] + inSet = neg_inf? edge = @set["edges"] for i in (0...edge.length) @@ -713,7 +715,7 @@ def max end def grep_set(block) - return nil if @set["negInf"] or @set["posInf"] + return nil if neg_inf? or pos_inf? edges = @set["edges"] sub_edges = [] @@ -741,7 +743,7 @@ def grep_set(block) end def map_set(block) - return nil if @set["negInf"] or @set["posInf"] + return nil if neg_inf? or pos_inf? map_set = new @@ -786,7 +788,7 @@ def start(startval) set["iterator"] = nil startval or return nil - inSet = @set["negInf"] + inSet = neg_inf? edges = @set["edges"] for i in (0...edges.length)