From 0651aff49ae7e066bc301faeecfbd519c4743849 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 3 Apr 2013 23:09:49 -0700 Subject: gras: figured out how to do the python reference --- include/gras/detail/element.hpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'include/gras/detail') diff --git a/include/gras/detail/element.hpp b/include/gras/detail/element.hpp index 35033e1..22a63a0 100644 --- a/include/gras/detail/element.hpp +++ b/include/gras/detail/element.hpp @@ -5,6 +5,19 @@ namespace gras { + struct WeakElementSharedPtr : WeakElement + { + WeakElementSharedPtr(boost::weak_ptr weak_self) + { + _weak_self = weak_self; + } + boost::shared_ptr lock(void) + { + return _weak_self.lock(); + } + boost::weak_ptr _weak_self; + }; + template inline Element::Element(const boost::shared_ptr &elem) { @@ -16,7 +29,8 @@ namespace gras { try { - this->weak_self = this->shared_from_this(); + if (not this->weak_self) + this->weak_self.reset(new WeakElementSharedPtr(this->shared_from_this())); } catch(...){} return *this; -- cgit