Jump To …

CompoundByteIterable.coffee

ByteIterableBase =
  (require '../../database/impl/iterate/ByteIterableBase.coffee').
  ByteIterableBase
CompoundByteIteratorBase =
  (require './CompoundByteIteratorBase.coffee').CompoundByteIteratorBase
ExodusError =
  (require '../../util/ExodusVersion.coffee').ExodusError

This class allows to work with many iterables as one.

class CompoundByteIterable extends ByteIterableBase

@private

  iterables: undefined

@private

  count: undefined

Constructor.

@param iterables the array of iterables to use.

  @create$BufferByteIterable: (iterables, o) ->
    return CompoundByteIterable.create$ArrayByteIterable$int iterables,
      iterables.length, o

Constructor.

@param iterables the array of iterables to use. @param count the amount of iterables in array.

  @create$ArrayByteIterable$int: (iterables, count, o) ->
    if (count < 1)
      throw new ExodusError("Failed to initialize CompoundByteIterable")
    if !o? then o = new CompoundByteIterable
    o.iterables = iterables
    o.count = count
    return o

  getIterator: () ->
    res = CompoundByteIteratorBase.create$ByteIterator @iterables.iterator()
    res.offs = 0
    res.nextIterator$emit = () ->
      offs += 1
      return if offs < @count then @iterables[offs].iterator() else undefined
    return res