#include <libwccl/ops/match/matchoperator.h> #include <sstream> namespace Wccl { boost::shared_ptr<Match> MatchOperator::apply( boost::shared_ptr<Position> iter_pos, const FunExecContext& context) const { int orig_iter_pos = iter_pos->get_value(); MatchResult res = _conditions->apply(iter_pos, context); if(res.matched()) { return res.get_match(); } iter_pos->set_value(orig_iter_pos + 1); return boost::make_shared<Match>(); } std::string MatchOperator::to_string(const Corpus2::Tagset& tagset) const { std::ostringstream ostream; ostream << name() << _conditions->to_string(tagset); return ostream.str(); } std::ostream& MatchOperator::write_to(std::ostream &ostream) const { return ostream << name() << *_conditions; } } /* end ns Wccl */