From 2636e266dc7a048e52b40b668c460c2793e897c4 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 18 Aug 2010 20:02:11 +0200 Subject: Move shared_ptr to the details namespace --- odb/shared-ptr.hxx | 159 ----------------------------------------------------- 1 file changed, 159 deletions(-) delete mode 100644 odb/shared-ptr.hxx (limited to 'odb/shared-ptr.hxx') diff --git a/odb/shared-ptr.hxx b/odb/shared-ptr.hxx deleted file mode 100644 index f6096f7..0000000 --- a/odb/shared-ptr.hxx +++ /dev/null @@ -1,159 +0,0 @@ -// file : odb/shared-ptr.hxx -// author : Boris Kolpackov -// copyright : Copyright (c) 2009-2010 Code Synthesis Tools CC -// license : GNU GPL v2; see accompanying LICENSE file - -#ifndef ODB_SHARED_PTR_HXX -#define ODB_SHARED_PTR_HXX - -#include - -namespace odb -{ - template - class shared_ptr: bits::counter_ops::r, X> - { - typedef bits::counter_ops::r, X> base; - - public: - ~shared_ptr () - { - if (x_ != 0) - base::dec (x_); - } - - explicit - shared_ptr (X* x = 0) - : base (x), x_ (x) - { - } - - shared_ptr (const shared_ptr& x) - : base (x), x_ (x.x_) - { - if (x_ != 0) - base::inc (x_); - } - - template - shared_ptr (const shared_ptr& x) - : base (x), x_ (x.x_) - { - if (x_ != 0) - base::inc (x_); - } - - shared_ptr& - operator= (const shared_ptr& x) - { - if (x_ != x.x_) - { - if (x_ != 0) - base::dec (x_); - - static_cast (*this) = x; - x_ = x.x_; - - if (x_ != 0) - base::inc (x_); - } - - return *this; - } - - template - shared_ptr& - operator= (const shared_ptr& x) - { - if (x_ != x.x_) - { - if (x_ != 0) - base::dec (x_); - - static_cast (*this) = x; - x_ = x.x_; - - if (x_ != 0) - base::inc (x_); - } - - return *this; - } - - public: - X* - operator-> () const - { - return x_; - } - - X& - operator* () const - { - return *x_; - } - - // Conversion to bool. - // - typedef void (shared_ptr::*boolean_convertible)(); - void true_value () {}; - - operator boolean_convertible () const - { - return x_ ? &shared_ptr::true_value : 0; - } - - public: - X* - get () const - { - return x_; - } - - X* - release () - { - X* r (x_); - x_ = 0; - return r; - } - - void - reset (X* x) - { - if (x_ != 0) - base::dec (x_); - - base::reset (x); - x_ = x; - } - - std::size_t - count () const - { - return x_ != 0 ? base::count (x_) : 0; - } - - private: - template - friend class shared_ptr; - - X* x_; - }; - - template - inline bool - operator== (const shared_ptr& x, const shared_ptr& y) - { - return x.get () == y.get (); - } - - template - inline bool - operator!= (const shared_ptr& x, const shared_ptr& y) - { - return x.get () != y.get (); - } -} - -#endif // ODB_SHARED_PTR_HXX -- cgit v1.1