#ifndef LIBWCCL_VALUES_ANNOTATIONMATCH_H
#define LIBWCCL_VALUES_ANNOTATIONMATCH_H

#include <libwccl/values/match.h>

namespace Wccl {

class AnnotationMatch : public Match
{
public:
	WCCL_VALUE_PREAMBLE

	explicit AnnotationMatch(Position position, const std::string channel)
		: position_(position), channel_(channel)
	{
		BOOST_ASSERT(position_.get_value() != Position::Nowhere);
	}

	explicit AnnotationMatch(int pos,const std::string channel)
		: position_(pos), channel_(channel)
	{
		BOOST_ASSERT(position_.get_value() != Position::Nowhere);
	}

	/// Match override.
	bool empty() const {
		return false;
	}

	/// Match override.
	Position first_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>& s) const;

	/// Match override.
	Position last_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>& s) const;

	/// Value override
	std::string to_raw_string() const;

private:
	Position position_;
	std::string channel_;
};

} /* end ns Wccl */

#endif // LIBWCCL_VALUES_ANNOTATIONMATCH_H