X-Git-Url: http://git.megacz.com/?p=org.ibex.io.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fio%2FFountain.java;fp=src%2Forg%2Fibex%2Fio%2FFountain.java;h=dd216589b6d38db1abd98e13e5e223a1c0c9e443;hp=8e2561c7938bc4b2c497cb48eaf0234b1796a939;hb=f24a25bd4b457e97d578f2a1dc86f40b517a35da;hpb=0e435c7d172d35149811787061b13e89fb912922 diff --git a/src/org/ibex/io/Fountain.java b/src/org/ibex/io/Fountain.java index 8e2561c..dd21658 100644 --- a/src/org/ibex/io/Fountain.java +++ b/src/org/ibex/io/Fountain.java @@ -54,14 +54,56 @@ public interface Fountain { } public static class Concatenate implements Fountain { - Fountain f1, f2; - public Concatenate(Fountain f1, Fountain f2) { this.f1 = f1; this.f2 = f2; } - public Stream getStream() { return f1.getStream().appendStream(f2.getStream()); } - public int getLength() { return f1.getLength()+f2.getLength(); } - public int getNumLines() { return f1.getNumLines()+f2.getNumLines(); } + private Fountain[] founts; + public Concatenate(Fountain f1, Fountain f2) { this(new Fountain[] { f1, f2 }); } + public Concatenate(Fountain[] f) { this.founts = f; } + public Stream getStream() { + Stream ret = null; + for(int i=founts.length-1; i>=0; i--) + ret = ret==null ? founts[i].getStream() : founts[i].getStream().appendStream(ret); + return ret; + } + public long getLength() { + long ret = 0; + for(int i=0; i