#ifndef SWIG_LIBWCCL_MATCHDATA_I
#define SWIG_LIBWCCL_MATCHDATA_I

%module libcclmatchdata
%{
  #include <libwccl/values/matchdata.h>
%}

%include "boost_shared_ptr.i"
%include "libcclmatch.i"
%include "libcorpus/libcorpusannotatedsentence.i"

%template(MatchDataPtr) boost::shared_ptr<Wccl::MatchData>;

namespace Wccl {
  class MatchData {
  public:
    ~MatchData();

    /* --------------------------------------------------------------------- */

    virtual bool empty() const = 0;
    virtual Position first_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>&) const = 0;
    virtual Position last_token(const boost::shared_ptr<Corpus2::AnnotatedSentence>&) const = 0;

    /* --------------------------------------------------------------------- */

    virtual const boost::shared_ptr<Match>& submatch(size_t);

    /* --------------------------------------------------------------------- */

    boost::shared_ptr<MatchData> clone() const;

    /* --------------------------------------------------------------------- */

    virtual std::string to_raw_string() const = 0;
  };
}

using namespace std;
using namespace Wccl;
using namespace boost;

#endif /* SWIG_LIBWCCL_MATCHDATA_I */