From 1239a80b6f5a325adf21f25c1301f3341315a16f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20K=C4=99dzia?= <Pawel.Kedzia@pwr.wroc.pl> Date: Thu, 17 Nov 2011 11:02:47 +0100 Subject: [PATCH] Updates token and cclwrited about use shared_ptr --- libcorpus2/io/cclwriter.cpp | 2 +- libcorpus2/token.cpp | 9 +++++---- libcorpus2/token.h | 20 +++++++++++++++----- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/libcorpus2/io/cclwriter.cpp b/libcorpus2/io/cclwriter.cpp index 4909291..b5ecf86 100644 --- a/libcorpus2/io/cclwriter.cpp +++ b/libcorpus2/io/cclwriter.cpp @@ -58,7 +58,7 @@ void CclWriter::write_sentence_int(const Sentence &s) os() << v.second.get_segment_at(idx); os() << "</ann>\n"; } - TokenMetaData* md = t->get_metadata(); + boost::shared_ptr<TokenMetaData> md = t->get_metadata(); if (md) { foreach (const TokenMetaData::attr_map_t::value_type& v, md->attributes()) { osi() << "<prop key=\"" << v.first << "\"" << ">"; diff --git a/libcorpus2/token.cpp b/libcorpus2/token.cpp index 496289a..5438c4b 100644 --- a/libcorpus2/token.cpp +++ b/libcorpus2/token.cpp @@ -23,7 +23,7 @@ or FITNESS FOR A PARTICULAR PURPOSE. namespace Corpus2 { Token::Token() - : orth_(), wa_(), lexemes_(), metadata_(NULL) + : orth_(), wa_(), lexemes_(), metadata_() { } @@ -44,8 +44,8 @@ Token* Token::clone() const t->orth_ = orth_; t->wa_ = wa_; t->lexemes_ = lexemes_; - if (metadata_.get()) { - t->set_metadata(metadata_->clone()); + if (metadata_) { + t->set_metadata_ptr(metadata_->clone()); } return t; } @@ -153,7 +153,8 @@ bool Token::orth_pos_match(mask_t pos, const UnicodeString &orth) const void Token::create_metadata() { - metadata_.reset(new TokenMetaData); + // metadata_.reset(new TokenMetaData); + metadata_ = boost::make_shared<TokenMetaData>(); } } /* end ns Corpus2 */ diff --git a/libcorpus2/token.h b/libcorpus2/token.h index d183450..4ab4272 100644 --- a/libcorpus2/token.h +++ b/libcorpus2/token.h @@ -24,6 +24,9 @@ or FITNESS FOR A PARTICULAR PURPOSE. #include <libpwrutils/util.h> #include <libpwrutils/whitespace.h> +#include <boost/shared_ptr.hpp> +#include <boost/make_shared.hpp> + #include <boost/iterator/filter_iterator.hpp> #include <boost/function.hpp> @@ -186,13 +189,19 @@ public: bool orth_pos_match(mask_t pos, const UnicodeString& orth) const; /// Metadata setter - void set_metadata(TokenMetaData* md) { - metadata_.reset(md); + void set_metadata(TokenMetaData& md) { + // metadata_.reset(md); + metadata_ = md.clone(); + } + + /// Metadata setter (sets metadata as shared_ptr) + void set_metadata_ptr(boost::shared_ptr<TokenMetaData> md) { + metadata_ = md; } /// Metadata getter - TokenMetaData* get_metadata() const { - return metadata_.get(); + boost::shared_ptr<TokenMetaData> get_metadata() const { + return metadata_; } /// Creates an empty metdata object for this Token @@ -210,7 +219,8 @@ private: std::vector<Lexeme> lexemes_; /// Metadata - std::auto_ptr<TokenMetaData> metadata_; + // std::auto_ptr<TokenMetaData> metadata_; + boost::shared_ptr<TokenMetaData> metadata_; }; } /* end ns Corpus2 */ -- GitLab