home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / BIPL.ZIP / IDOL.ZIP / SEQUENCE.IOL < prev    next >
Encoding:
Text File  |  1991-12-30  |  757 b   |  32 lines

  1. procedure sequence(bounds[ ])
  2.   return Sequence(bounds)
  3. end
  4.  
  5. class Sequence(bounds,indices)
  6.   method max(i)
  7.     elem := self.bounds[i]
  8.     return (type(elem)== "integer",elem) | *elem-1
  9.   end
  10.   method elem(i)
  11.     elem := self.bounds[i]
  12.     return (type(elem)== "integer",self.indices[i]) | elem[self.indices[i]+1]
  13.   end
  14.   method activate()
  15.     top := *(self.indices)
  16.     if self.indices[1] > self$max(1) then fail
  17.     s := ""
  18.     every i := 1 to top do {
  19.       s ||:= self$elem(i)
  20.     }
  21.     repeat {
  22.        self.indices[top] +:= 1
  23.        if top=1 | (self.indices[top] <= self$max(top)) then break
  24.        self.indices[top] := 0
  25.        top -:= 1
  26.     }
  27.     return s
  28.   end
  29. initially
  30.   / (self.indices) := list(*self.bounds,0)
  31. end
  32.