X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput.cpp;h=4a44dea05228ae14d1d91e698ebe4eecf98cb662;hb=HEAD;hp=5b2d63b7ba8becdc20232a8933b815b3c5d5f288;hpb=5453824394771ca21de32088a2842486b63e6f6d;p=libs%2Fdatafile.git diff --git a/source/input.cpp b/source/input.cpp index 5b2d63b..8aec39e 100644 --- a/source/input.cpp +++ b/source/input.cpp @@ -1,24 +1,30 @@ -/* -This file is part of libmspparser -Copyright © 2006 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ +#include #include "input.h" namespace Msp { -namespace Parser { +namespace DataFile { -Input::Input(std::istream &i): - in(i), - line(1), - next(-1) +Input::Input(IO::Base &i): + in(&i) { } +Input::~Input() +{ + delete compressed; +} + +void Input::set_decompress() +{ + compressed = new IO::ZlibCompressed(*in, IO::M_READ); + in = compressed; +} + int Input::get() { - int c=next; - next=-1; - if(c<0) c=in.get(); + int c = next; + next = -1; + if(c<0) + c = in->get(); if(c=='\n') ++line; @@ -29,9 +35,14 @@ int Input::get() int Input::peek() { if(next<0) - next=in.get(); + next = in->get(); return next; } -} // namespace Parser +Input::operator bool() const +{ + return next>=0 || !in->eof(); +} + +} // namespace DataFile } // namespace Msp