From f1a538f39ca73bae5cd55ba1c8c6f5065dce0c92 Mon Sep 17 00:00:00 2001 From: Bartosz Broda <bartosz.broda@gmail.com> Date: Thu, 9 Jun 2011 08:12:41 +0200 Subject: [PATCH] implementataion of inner reader functionality --- libmwereader/mwereader.cpp | 40 +++++++++++++++++++++++++------------- libmwereader/mwereader.h | 9 +++++++++ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/libmwereader/mwereader.cpp b/libmwereader/mwereader.cpp index 95d5ede..101ea1d 100644 --- a/libmwereader/mwereader.cpp +++ b/libmwereader/mwereader.cpp @@ -1,15 +1,15 @@ #include "mwereader.h" +#include <boost/algorithm/string.hpp> namespace Corpus2{ bool MWEReader::registered = TokenReader::register_path_reader<MWEReader>( - "mwereader","token,chunk,sentence"); // TODO wiecej helpa + "mwereader","token,chunk,sentence"); // TODO more help? MWEReader::MWEReader(const Tagset &tagset, const std::string &filename) - : TokenReader(tagset) + : TokenReader(tagset), inner_filename_(filename) { // TODO implementataion - std::cerr << "Jestem sobie MWE Readerkiem" << std::endl; } MWEReader::~MWEReader() @@ -19,37 +19,49 @@ bool MWEReader::registered = TokenReader::register_path_reader<MWEReader>( Token* MWEReader::get_next_token() { - // TODO implementation - return 0; + // TODO MWE stuff + return inner_reader_->get_next_token(); } Sentence::Ptr MWEReader::get_next_sentence() { - // TODO implementataion - return Sentence::Ptr(); + // TODO MWE stuff + return inner_reader_->get_next_sentence(); } boost::shared_ptr<Chunk> MWEReader::get_next_chunk() { - // TODO implementataion - return boost::shared_ptr<Chunk>(); + // TODO MWE stuff + return inner_reader_->get_next_chunk(); } void MWEReader::set_option(const std::string& option) { - // TODO implementataion + + if(boost::algorithm::starts_with(option, "inner:")) + { + std::string inner = option.substr(6); + inner_reader_ = create_path_reader(inner, this->tagset(), + inner_filename_); + } + + // TODO MWE stuff } void MWEReader::validate() { - // TODO implementataion + if(inner_reader_ == NULL) + throw Corpus2Error("Inner reader not initialised."); + // TODO MWE stuff } std::string MWEReader::get_option(const std::string& option) const { - // TODO implementataion - std::string s; - return s; + if(boost::algorithm::starts_with(option, "inner:") + && inner_reader_ != NULL) + return option; + // TODO options for MWE + return inner_reader_->get_option(option); } diff --git a/libmwereader/mwereader.h b/libmwereader/mwereader.h index 71466e5..7df2170 100644 --- a/libmwereader/mwereader.h +++ b/libmwereader/mwereader.h @@ -9,6 +9,9 @@ namespace Corpus2 { class MWEReader: public TokenReader { public: + /** + * \param filename corpus filename (MWE file is given in options) + */ MWEReader(const Tagset& tagset, const std::string& filename); ~MWEReader(); @@ -34,6 +37,12 @@ public: virtual void validate(); static bool registered; +private: + /// ptr to inner reader doing the real work of reading a corpus + TokenReaderPtr inner_reader_; + /// path for inner reader + std::string inner_filename_; + /// inner reader option }; } // ns Corpus2 -- GitLab