diff --git a/swig/libcclsentencecontext.i b/swig/libcclsentencecontext.i new file mode 100644 index 0000000000000000000000000000000000000000..b1bb4459e9bbe96460fbf1037e28be6dabd136e0 --- /dev/null +++ b/swig/libcclsentencecontext.i @@ -0,0 +1,70 @@ +#ifndef SWIG_LIBWCCL_SENTENCECONTEXT_I +#define SWIG_LIBWCCL_SENTENCECONTEXT_I + +%module libcclsentencecontext +%{ + #include <libwccl/sentencecontext.h> +%} + +%include "libcorpustoken.i" +%include "libcorpuslexeme.i" +%include "libcorpussentence.i" + +%include "libcclposition.i" + +%include "std_string.i" +%include "boost_shared_ptr.i" + +// %feature("notabstract") Wccl::SentenceContext; + +namespace Wccl { + class SentenceContext { + public: + explicit SentenceContext(const boost::shared_ptr<Corpus2::Sentence>& s); + + SentenceContext duplicate() const; + SentenceContext* clone() const; + + Corpus2::Sentence& get_sentence(); + const Corpus2::Sentence& get_sentence() const; + + int size() const; + int get_position() const; + + bool is_current_inside() const; + bool is_inside(int abs_pos) const; + bool is_inside(const Position& pos) const; + + bool is_outside(int abs_pos) const; + bool is_outside(const Position& pos) const; + + bool validate_range( + const Position& left, + const Position& right, + int& abs_left, + int& abs_right) const; + + void set_position(int new_position); + void advance(); + void goto_start(); + + const Corpus2::Token* at(int abs_pos) const; + const Corpus2::Token* at(const Position& position) const; + Corpus2::Token* at(int abs_pos); + Corpus2::Token* at(const Position& position); + const Corpus2::Token* current() const; + Corpus2::Token* current(); + + int get_abs_position(const Position& position) const; + int get_rel_position(const Position& position) const; + int translate_special_position(int pos) const; + }; +} + +%template(SentenceContextSharedPtr) boost::shared_ptr<Wccl::SentenceContext>; + +using namespace boost; +using namespace std; +using namespace Wccl; + +#endif /* SWIG_LIBWCCL_SENTENCECONTEXT_I */