Tanl Linguistic Pipeline |
00001 /* 00002 ** DeSR 00003 ** src/EventStream.h 00004 ** ---------------------------------------------------------------------- 00005 ** Copyright (c) 2005 Giuseppe Attardi (attardi@di.unipi.it). 00006 ** ---------------------------------------------------------------------- 00007 ** 00008 ** This file is part of DeSR. 00009 ** 00010 ** DeSR is free software; you can redistribute it and/or modify it 00011 ** under the terms of the GNU General Public License, version 3, 00012 ** as published by the Free Software Foundation. 00013 ** 00014 ** DeSR is distributed in the hope that it will be useful, 00015 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 ** GNU General Public License for more details. 00018 ** 00019 ** You should have received a copy of the GNU General Public License 00020 ** along with this program. If not, see <http://www.gnu.org/licenses/>. 00021 ** ---------------------------------------------------------------------- 00022 */ 00023 00024 #ifndef DeSR_EventStream_H 00025 #define DeSR_EventStream_H 00026 00027 // local 00028 #include "Corpus.h" 00029 #include "State.h" 00030 00031 namespace Parser { 00032 00038 class EventStream : public Tanl::Classifier::EventStream, public Iterator<Tanl::Classifier::Event*> 00039 { 00040 public: 00041 00048 EventStream(Tanl::Enumerator<Sentence*>* reader, GlobalInfo* info, 00049 int sentenceCutoff = INT_MAX) : 00050 reader(reader), 00051 info(info), 00052 sentenceCutoff(sentenceCutoff), 00053 sentenceCount(0), 00054 state(0) 00055 { } 00056 00057 virtual ~EventStream() { 00058 delete state; 00059 } 00060 00064 bool hasNext(); 00065 00069 Tanl::Classifier::Event* next(); 00070 00074 void reset() { 00075 reader->Reset(); 00076 sentenceCount = 0; 00077 } 00078 00080 bool EoS() { return !state->hasNext(); } 00081 00082 Tanl::Enumerator<Sentence*>* reader; 00083 TrainState* state; 00084 GlobalInfo* info; 00085 00087 std::string& splitFeature() { return state->splitFeature; } 00088 00090 int sentenceCutoff; 00092 int sentenceCount; 00093 }; 00094 00095 } // namespace Parser 00096 00097 #endif // DeSR_EventStream_H