home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / OL.LZH / IDOL.LZH / SEQUENCE.IOL < prev    next >
Text File  |  1991-07-18  |  757b  |  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.