Skip to content
Snippets Groups Projects
libccltagrulesequence.i 1.32 KiB
Newer Older
#ifndef SWIG_LIBWCCL_TAGRULESEQUENCE_I
#define SWIG_LIBWCCL_TAGRULESEQUENCE_I

%module libccltagrulesequence
%{
  #include <libwccl/ops/tagrulesequence.h>
%}

%include "libcclbool.i"
%include "libccltagrule.i"
%include "libcclexpression.i"
%include "libcorpus/libcorpussentence.i"

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

%template(StdVectorTagRule) std::vector<TagRule>;
%template(TagRuleSequencPtr) boost::shared_ptr<Wccl::TagRuleSequence>;

namespace Wccl {
  class TagRuleSequence : public std::vector<TagRule>, public Expression {
  public:
    TagRuleSequence(const std::vector<TagRule>& rules);
    TagRuleSequence();

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

    %rename(OpFunTagRuleSequence) operator()(
      const shared_ptr<Corpus2::Sentence>& sentence
    Bool operator()(const shared_ptr<Corpus2::Sentence>& sentence);

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

    Bool execute_once(const shared_ptr<Corpus2::Sentence>& sentence);
    int execute_until_done(const shared_ptr<Corpus2::Sentence>& sentence, int max_iter = 1000);

    std::string to_string(const Corpus2::Tagset& tagset) const;
  };
}

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

#endif /* SWIG_LIBWCCL_TAGRULESEQUENCE_I */