Newer
Older
#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;