Skip to content
Snippets Groups Projects
libcclmatchdata.i 1.39 KiB
Newer Older
#ifndef SWIG_LIBWCCL_MATCHDATA_I
#define SWIG_LIBWCCL_MATCHDATA_I

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

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

%include "std_string.i"
%include "boost_shared_ptr.i"

%nodefaultctor Wccl::MatchData;

Paweł Kędzia's avatar
Paweł Kędzia committed
%template(MatchDataPtr) boost::shared_ptr<Wccl::MatchData>;

namespace Wccl {
  class MatchData {
  public:
    virtual bool empty() const = 0;

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

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

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

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

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

    boost::shared_ptr<MatchData> clone() const;
    
    /* --------------------------------------------------------------------- */
    
    virtual std::string to_raw_string() const = 0;

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

    virtual ~MatchData() {}
  };
}

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

#endif /* SWIG_LIBWCCL_MATCHDATA_I */