diff --git a/swig/Makefile b/swig/Makefile index 17ffc19a0b261703b0eb0a8af14e7629467448d8..fe8d19f706d4dbb47371b8151fe7dd4ddd41cf7a 100644 --- a/swig/Makefile +++ b/swig/Makefile @@ -16,42 +16,48 @@ CPPFLAGS=-fPIC -O2 CBIN=libcorpustag.o \ libcorpustagset.o \ libcorpustagsetmanager.o \ - libcorpuslexeme.o + libcorpuslexeme.o \ + libcorpussentence.o CBINOUT=_boost_shared_ptr.so \ _libcorpustag.so \ _libcorpustagset.so \ _libcorpustagsetmanager.so \ _libcorpuslexeme.so \ - _libcorpustoken.so + _libcorpustoken.so \ + _libcorpussentence.so CWRAP=boost_shared_ptr_wrap.cxx \ libcorpustag_wrap.cxx \ libcorpustagset_wrap.cxx \ libcorpustagsetmanager_wrap.cxx \ libcorpuslexeme_wrap.cxx \ - libcorpustoken_wrap.cxx + libcorpustoken_wrap.cxx \ + libcorpussentence_wrap.cxx CWRAPBIN=boost_shared_ptr_wrap.o \ libcorpustag_wrap.o \ libcorpustagset_wrap.o \ libcorpustagsetmanager_wrap.o \ libcorpuslexeme_wrap.o \ - libcorpustoken_wrap.o + libcorpustoken_wrap.o \ + libcorpussentence_wrap.o PYMODULES=boost_shared_ptr.py \ libcorpustag.py \ libcorpustagset.py \ libcorpustagsetmanager.py \ libcorpuslexeme.py \ - libcorpustoken.py + libcorpustoken.py \ + libcorpussentence.py PYCBIN=boost_shared_ptr.pyc \ libcorpustag.pyc \ libcorpustagset.pyc \ libcorpustagsetmanager.pyc \ libcorpuslexeme.pyc \ - libcorpustoken.pyc + libcorpustoken.pyc \ + libcorpussentence.pyc # ----------------------------------------------------------------------------- all:boost_shared_ptr.o $(CBIN) @@ -99,6 +105,13 @@ libcorpuslexeme.o: $(CPP) -shared libcorpuslexeme_wrap.o \ $(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpuslexeme.so +# Sentence +libcorpussentence.o: + $(SWIG) $(SWIGOPTS_LANG) libcorpussentence.i + $(CPP) -c libcorpussentence_wrap.cxx -I$(PYTHONDIR) $(CPPFLAGS) + $(CPP) -shared libcorpussentence_wrap.o \ + $(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpussentence.so + # ----------------------------------------------------------------------------- clean: rm -f $(CBIN) $(CBINOUT) $(CWRAP) $(CWRAPBIN) $(PYMODULES) $(PYCBIN) diff --git a/swig/libcorpussentence.i b/swig/libcorpussentence.i new file mode 100644 index 0000000000000000000000000000000000000000..9fa1d1b2c231e8fdf88444f6c14c468a586661dc --- /dev/null +++ b/swig/libcorpussentence.i @@ -0,0 +1,51 @@ +#ifndef SWIG_LIBCORPUS2_SENTENCE_I +#define SWIG_LIBCORPUS2_SENTENCE_I + +%module libcorpussentence +%{ + #include <libcorpus2/sentence.h> +%} + +%include "std_string.i" +%include "libcorpustoken.i" +%include "boost_shared_ptr.i" + +%template(Ptr) boost::shared_ptr<Corpus2::Sentence>; +%template(ConstPtr) boost::shared_ptr<const Corpus2::Sentence>; + +namespace Corpus2 { + class Sentence { + public: + typedef boost::shared_ptr<Sentence> Ptr; + typedef boost::shared_ptr<const Sentence> ConstPtr; + + /* --------------------------------------------------------------------- */ + + Sentence(); + ~Sentence(); + + /* --------------------------------------------------------------------- */ + + virtual Ptr clone_shared() const; + void release_tokens(); + bool empty() const; + size_t size() const; + + %rename(GetToken) operator[]; + Token* operator[](size_t idx); + + %rename(GetConstToken) operator[]; + const Token* operator[](size_t idx) const; + + const std::vector<Token*>& tokens() const; + std::vector<Token*>& tokens(); + + virtual void append(Token* t); + const Token* first_token() const; + }; +} + +using namespace std; +using namespace Corpus2; + +#endif /* SWIG_LIBCORPUS2_SENTENCE_I */