Skip to content
Snippets Groups Projects
matchoperator.cpp 764 B
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;
}

} /* end ns Wccl */