From b0f6246a890ffad2b5f976bce319cbfe21029e56 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20K=C4=99dzia?= <pawel.kedzia@pwr.wroc.pl>
Date: Wed, 27 Apr 2011 13:53:56 +0200
Subject: [PATCH] Wrapper for Corpus2::TokenWriter

---
 swig/Makefile               | 25 ++++++++++++----
 swig/libcorpustokenwriter.i | 57 +++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+), 6 deletions(-)
 create mode 100644 swig/libcorpustokenwriter.i

diff --git a/swig/Makefile b/swig/Makefile
index caccecb..4112777 100644
--- a/swig/Makefile
+++ b/swig/Makefile
@@ -18,7 +18,8 @@ CBIN=libcorpustag.o \
 		 libcorpustagsetmanager.o \
 		 libcorpuslexeme.o \
 		 libcorpussentence.o \
-		 libcorpuschunk.o
+		 libcorpuschunk.o \
+		 libcorpustokenwriter.o
 
 CBINOUT=_boost_shared_ptr.so \
 				_libcorpustag.so \
@@ -27,7 +28,8 @@ CBINOUT=_boost_shared_ptr.so \
 				_libcorpuslexeme.so \
 				_libcorpustoken.so \
 				_libcorpussentence.so \
-				_libcorpuschunk.so
+				_libcorpuschunk.so \
+				_libcorpustokenwriter.so
 
 CWRAP=boost_shared_ptr_wrap.cxx \
 			libcorpustag_wrap.cxx \
@@ -36,7 +38,8 @@ CWRAP=boost_shared_ptr_wrap.cxx \
 			libcorpuslexeme_wrap.cxx \
 			libcorpustoken_wrap.cxx \
 			libcorpussentence_wrap.cxx \
-			libcorpuschunk_wrap.cxx
+			libcorpuschunk_wrap.cxx \
+			libcorpustokenwriter_wrap.cxx
 
 CWRAPBIN=boost_shared_ptr_wrap.o \
 				 libcorpustag_wrap.o \
@@ -45,7 +48,8 @@ CWRAPBIN=boost_shared_ptr_wrap.o \
 				 libcorpuslexeme_wrap.o \
 				 libcorpustoken_wrap.o \
 				 libcorpussentence_wrap.o \
-				 libcorpuschunk_wrap.o
+				 libcorpuschunk_wrap.o \
+				 libcorpustokenwriter_wrap.o
 
 PYMODULES=boost_shared_ptr.py \
 					libcorpustag.py \
@@ -54,7 +58,8 @@ PYMODULES=boost_shared_ptr.py \
 					libcorpuslexeme.py \
 					libcorpustoken.py \
 					libcorpussentence.py \
-					libcorpuschunk.py
+					libcorpuschunk.py \
+					libcorpustokenwriter.py
 
 PYCBIN=boost_shared_ptr.pyc \
 			 libcorpustag.pyc \
@@ -63,7 +68,8 @@ PYCBIN=boost_shared_ptr.pyc \
 			 libcorpuslexeme.pyc \
 			 libcorpustoken.pyc \
 			 libcorpussentence.pyc \
-			 libcorpuschunk.pyc
+			 libcorpuschunk.pyc \
+			 libcorpustokenwriter.pyc
 
 # -----------------------------------------------------------------------------
 all:boost_shared_ptr.o $(CBIN)
@@ -125,6 +131,13 @@ libcorpussentence.o:
 	$(CPP) -shared libcorpussentence_wrap.o \
 		$(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpussentence.so
 
+# TokenWriter
+libcorpustokenwriter.o:
+	$(SWIG) $(SWIGOPTS_LANG) libcorpustokenwriter.i
+	$(CPP) -c libcorpustokenwriter_wrap.cxx -I$(PYTHONDIR) $(CPPFLAGS)
+	$(CPP) -shared libcorpustokenwriter_wrap.o \
+		$(PWRUTILBIN) $(CORPUS2BIN) -o _libcorpustokenwriter.so
+
 # -----------------------------------------------------------------------------
 clean:
 	rm -f $(CBIN) $(CBINOUT) $(CWRAP) $(CWRAPBIN) $(PYMODULES) $(PYCBIN)
diff --git a/swig/libcorpustokenwriter.i b/swig/libcorpustokenwriter.i
new file mode 100644
index 0000000..19e914f
--- /dev/null
+++ b/swig/libcorpustokenwriter.i
@@ -0,0 +1,57 @@
+#ifndef SWIG_LIBCORPUS2_TOKENWRITER_I
+#define SWIG_LIBCORPUS2_TOKENWRITER_I
+
+%module libcorpustokenwriter
+%{
+  #include <libcorpus2/io/writer.h>
+%}
+
+%include "libcorpustag.i"
+%include "libcorpustoken.i"
+%include "libcorpuschunk.i"
+%include "libcorpustagset.i"
+%include "libcorpussentence.i"
+%include "std_string.i"
+%include "boost_shared_ptr.i"
+
+%nodefaultctor Corpus2::TokenWriter;
+%template(TokenWriterPtr) boost::shared_ptr<Corpus2::TokenWriter>;
+
+namespace Corpus2 {
+  class TokenWriter {
+  public:
+    typedef boost::shared_ptr<TokenWriter> TokenWriterPtr;
+    /* --------------------------------------------------------------------- */
+
+    TokenWriter();
+    // TokenWriter(std::ostream& os, const Tagset& tagset, const string_range_vector& params);
+    ~TokenWriter();
+    
+    /* --------------------------------------------------------------------- */
+    virtual void write_token(const Token& t) = 0;
+    void write_token_dispose(Token* t);
+    virtual void write_sentence(const Sentence& s) = 0;
+    virtual void write_chunk(const Chunk& p) = 0;
+
+    /* --------------------------------------------------------------------- */
+    // std::ostream& os();
+    const Tagset& tagset();
+    void finish();
+    
+    /* --------------------------------------------------------------------- */
+    static TokenWriterPtr create_stream_writer(
+      const std::string& class_id_params, 
+      std::ostream& os, const Tagset& 
+      tagset);
+
+    static TokenWriterPtr create_path_writer(
+      const std::string& class_id_params,
+      const std::string& path,
+      const Tagset& tagset);
+  };
+}
+
+using namespace std;
+using namespace Corpus2;
+
+#endif /* SWIG_LIBCORPUS2_TOKENWRITER_I */
-- 
GitLab