X-Git-Url: http://nitlanguage.org diff --git a/lib/filter_stream.nit b/lib/filter_stream.nit index 52076c9..66366c6 100644 --- a/lib/filter_stream.nit +++ b/lib/filter_stream.nit @@ -1,6 +1,7 @@ # This file is part of NIT ( http://www.nitlanguage.org ). # # Copyright 2006 Floréal Morandat +# Copyright 2009 Jean-Sebastien Gelinas # # This file is free software, which comes along with NIT. This software is # distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; @@ -11,45 +12,45 @@ # another product. class FilterIStream -special IStream + super IStream # Filter readed elements - readable attr _stream: IStream + readable var _stream: nullable IStream - redef meth eof: Bool + redef fun eof: Bool do assert stream != null return stream.eof end - private meth stream=(i: IStream) + private fun stream=(i: nullable IStream) do _stream = i end end class FilterOStream -special OStream + super OStream # Filter outputed elements - readable attr _stream: OStream + readable var _stream: nullable OStream # Can the stream be used to write - redef meth is_writable: Bool + redef fun is_writable: Bool do assert stream != null return stream.is_writable end - private meth stream=(i: OStream) + private fun stream=(i: OStream) do _stream = i end end class StreamCat -special FilterIStream - attr _streams: Iterator[IStream] + super FilterIStream + var _streams: Iterator[IStream] - redef meth eof: Bool + redef fun eof: Bool do if stream == null then return true @@ -62,7 +63,7 @@ special FilterIStream end end - redef meth stream: IStream + redef fun stream: nullable IStream do if _stream == null and _streams.is_ok then stream = _streams.item @@ -72,13 +73,13 @@ special FilterIStream return _stream end - redef meth read_char: Int + redef fun read_char: Int do assert not eof return stream.read_char end - redef meth close + redef fun close do while stream != null do stream.close @@ -97,10 +98,10 @@ special FilterIStream end class StreamDemux -special FilterOStream - attr _streams: Array[OStream] + super FilterOStream + var _streams: Array[OStream] - redef meth is_writable: Bool + redef fun is_writable: Bool do if stream.is_writable then return true @@ -115,7 +116,7 @@ special FilterOStream end end - redef meth write(s: String) + redef fun write(s: String) do for i in _streams do @@ -126,6 +127,15 @@ special FilterOStream end end + redef fun close + do + for i in _streams + do + stream = i + stream.close + end + end + init with_streams(streams: Array[OStream]) do _streams = streams