From 08aab0c333f1245cf8bdfc8604dcc9b0a4889a86 Mon Sep 17 00:00:00 2001
From: Adam Radziszewski <adam.radziszewski@pwr.wroc.pl>
Date: Fri, 20 May 2011 16:36:43 +0200
Subject: [PATCH] wrap SWIG Token* to shared_ptr

---
 swig/libcorpustokenreader.i | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/swig/libcorpustokenreader.i b/swig/libcorpustokenreader.i
index c5d64d1..901b259 100644
--- a/swig/libcorpustokenreader.i
+++ b/swig/libcorpustokenreader.i
@@ -18,13 +18,15 @@
 
 %nodefaultctor Corpus2::TokenReader;
 %template(TokenReaderPtr) boost::shared_ptr<Corpus2::TokenReader>;
+%template(TokenPtr) boost::shared_ptr<Corpus2::Token>;
 // %template(StdStringVector) std::vector<std::string>;
 // %template(ChunkPtr) boost::shared_ptr<Corpus2::Chunk>;
-
+typedef boost::shared_ptr<Corpus2::Token> TokenPtr;
 namespace Corpus2 {
   class TokenReader {
   public:
     typedef boost::shared_ptr<TokenReader> TokenReaderPtr;
+    //typedef boost::shared_ptr<Token> TokenPtr;
 
     /* --------------------------------------------------------------------- */
     explicit TokenReader(const Tagset& tagset);
@@ -58,7 +60,7 @@ namespace Corpus2 {
       std::istream& stream);
 
     /* --------------------------------------------------------------------- */
-    virtual Token* get_next_token() = 0;
+    /* virtual Token* get_next_token() = 0; */
     virtual Sentence::Ptr get_next_sentence() = 0;
     virtual boost::shared_ptr<Chunk> get_next_chunk() = 0;
     virtual bool has_more() = 0;
@@ -76,6 +78,13 @@ namespace Corpus2 {
     static std::vector<std::string> available_reader_types_help();
   };
 
+  %extend TokenReader {
+    /* modfify the native get_next_token to wrap the tokens into shared_ptr */
+    boost::shared_ptr<Corpus2::Token> get_next_token() {
+      return boost::shared_ptr<Corpus2::Token>(self->get_next_token());
+    }
+  }
+
   std::vector<boost::shared_ptr<Chunk> > read_chunks_from_utf8_string(
     const std::string& data, const Tagset& tagset, const std::string& format);
  
-- 
GitLab