Skip to content
Snippets Groups Projects
Commit 09859b9c authored by ilor's avatar ilor
Browse files

add SentenceContext clone and duplicate

parent 83bbfa4d
Branches
No related merge requests found
...@@ -7,4 +7,16 @@ SentenceContext::SentenceContext(const boost::shared_ptr<Corpus2::Sentence>& s) ...@@ -7,4 +7,16 @@ SentenceContext::SentenceContext(const boost::shared_ptr<Corpus2::Sentence>& s)
{ {
} }
SentenceContext SentenceContext::duplicate() const
{
SentenceContext dup(*this);
dup.sentence_.reset(sentence_->clone());
return dup;
}
SentenceContext* SentenceContext::clone() const
{
return new SentenceContext(duplicate());
}
} /* end ns Wccl */ } /* end ns Wccl */
...@@ -9,13 +9,20 @@ namespace Wccl { ...@@ -9,13 +9,20 @@ namespace Wccl {
/** /**
* A wrapper for a Corpus2 Sentence that adds a "current position" * A wrapper for a Corpus2 Sentence that adds a "current position"
* and several convenience functions. * and several convenience functions.
*
* Copying contexts is cheap and safe since the sentence is kept through
* a shared pointer, use duplicate() or clone() to get a copy with a separate
* underlying sentence (which is slower).
*/ */
class SentenceContext class SentenceContext
{ {
public: public:
/// Constructor, wraps the Sentence and stes position to 0 /// Constructor, wraps the Sentence and sets position to 0
SentenceContext(const boost::shared_ptr<Corpus2::Sentence>& s); SentenceContext(const boost::shared_ptr<Corpus2::Sentence>& s);
/// Returns a copy of this with a cloned underlyiong sentence
SentenceContext duplicate() const;
/// Cloning -- clones the underlying sentence as well /// Cloning -- clones the underlying sentence as well
SentenceContext* clone() const; SentenceContext* clone() const;
...@@ -97,6 +104,8 @@ private: ...@@ -97,6 +104,8 @@ private:
int position_; int position_;
}; };
// TODO ConstSentenceContext ?
} /* end ns Wccl */ } /* end ns Wccl */
#endif // LIBWCCL_SENTENCECONTEXT_H #endif // LIBWCCL_SENTENCECONTEXT_H
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment