[Lldb-commits] [lldb] r105896 - in /lldb/trunk: include/lldb/Utility/SharingPtr.h include/lldb/lldb-types.h source/Utility/SharingPtr.cpp source/Utility/SharingPtr.h
Eli Friedman
eli.friedman at gmail.com
Sat Jun 12 11:29:53 PDT 2010
Author: efriedma
Date: Sat Jun 12 13:29:53 2010
New Revision: 105896
URL: http://llvm.org/viewvc/llvm-project?rev=105896&view=rev
Log:
Move SharingPtr.h into include/.
Added:
lldb/trunk/include/lldb/Utility/SharingPtr.h
- copied, changed from r105895, lldb/trunk/source/Utility/SharingPtr.h
Removed:
lldb/trunk/source/Utility/SharingPtr.h
Modified:
lldb/trunk/include/lldb/lldb-types.h
lldb/trunk/source/Utility/SharingPtr.cpp
Copied: lldb/trunk/include/lldb/Utility/SharingPtr.h (from r105895, lldb/trunk/source/Utility/SharingPtr.h)
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/SharingPtr.h?p2=lldb/trunk/include/lldb/Utility/SharingPtr.h&p1=lldb/trunk/source/Utility/SharingPtr.h&r1=105895&r2=105896&rev=105896&view=diff
==============================================================================
--- lldb/trunk/source/Utility/SharingPtr.h (original)
+++ lldb/trunk/include/lldb/Utility/SharingPtr.h Sat Jun 12 13:29:53 2010
@@ -11,6 +11,7 @@
#define utility_SharingPtr_h_
#include <algorithm>
+#include <memory>
namespace lldb {
@@ -67,6 +68,7 @@
element_type* ptr_;
imp::shared_count* cntrl_;
+ struct nat {int for_bool_;};
public:
SharingPtr();
template<class Y> explicit SharingPtr(Y* p);
@@ -90,7 +92,7 @@
long use_count() const {return cntrl_ ? cntrl_->use_count() : 0;}
bool unique() const {return use_count() == 1;}
bool empty() const {return cntrl_ == 0;}
- operator void*() const { return get(); }
+ operator nat*() const {return (nat*)get();}
private:
Modified: lldb/trunk/include/lldb/lldb-types.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-types.h?rev=105896&r1=105895&r2=105896&view=diff
==============================================================================
--- lldb/trunk/include/lldb/lldb-types.h (original)
+++ lldb/trunk/include/lldb/lldb-types.h Sat Jun 12 13:29:53 2010
@@ -26,7 +26,7 @@
#include <stdbool.h>
#include <unistd.h>
-#include "SharingPtr.h"
+#include "lldb/Utility/SharingPtr.h"
//----------------------------------------------------------------------
// All host systems must define:
Modified: lldb/trunk/source/Utility/SharingPtr.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/SharingPtr.cpp?rev=105896&r1=105895&r2=105896&view=diff
==============================================================================
--- lldb/trunk/source/Utility/SharingPtr.cpp (original)
+++ lldb/trunk/source/Utility/SharingPtr.cpp Sat Jun 12 13:29:53 2010
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#include "SharingPtr.h"
+#include "lldb/Utility/SharingPtr.h"
namespace lldb {
Removed: lldb/trunk/source/Utility/SharingPtr.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/SharingPtr.h?rev=105895&view=auto
==============================================================================
--- lldb/trunk/source/Utility/SharingPtr.h (original)
+++ lldb/trunk/source/Utility/SharingPtr.h (removed)
@@ -1,252 +0,0 @@
-//===---------------------SharingPtr.h --------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef utility_SharingPtr_h_
-#define utility_SharingPtr_h_
-
-#include <algorithm>
-
-namespace lldb {
-
-namespace imp {
-
-class shared_count
-{
- shared_count(const shared_count&);
- shared_count& operator=(const shared_count&);
-
-protected:
- long shared_owners_;
- virtual ~shared_count();
-private:
- virtual void on_zero_shared() = 0;
-
-public:
- explicit shared_count(long refs = 0)
- : shared_owners_(refs) {}
-
- void add_shared();
- void release_shared();
- long use_count() const {return shared_owners_ + 1;}
-};
-
-template <class T>
-class shared_ptr_pointer
- : public shared_count
-{
- T data_;
-public:
- shared_ptr_pointer(T p)
- : data_(p) {}
-
-private:
- virtual void on_zero_shared();
-};
-
-template <class T>
-void
-shared_ptr_pointer<T>::on_zero_shared()
-{
- delete data_;
-}
-
-} // namespace
-
-template<class T>
-class SharingPtr
-{
-public:
- typedef T element_type;
-private:
- element_type* ptr_;
- imp::shared_count* cntrl_;
-
-public:
- SharingPtr();
- template<class Y> explicit SharingPtr(Y* p);
- template<class Y> SharingPtr(const SharingPtr<Y>& r, element_type *p);
- SharingPtr(const SharingPtr& r);
- template<class Y>
- SharingPtr(const SharingPtr<Y>& r);
-
- ~SharingPtr();
-
- SharingPtr& operator=(const SharingPtr& r);
- template<class Y> SharingPtr& operator=(const SharingPtr<Y>& r);
-
- void swap(SharingPtr& r);
- void reset();
- template<class Y> void reset(Y* p);
-
- element_type* get() const {return ptr_;}
- element_type& operator*() const {return *ptr_;}
- element_type* operator->() const {return ptr_;}
- long use_count() const {return cntrl_ ? cntrl_->use_count() : 0;}
- bool unique() const {return use_count() == 1;}
- bool empty() const {return cntrl_ == 0;}
- operator void*() const { return get(); }
-
-private:
-
- template <class U> friend class SharingPtr;
-};
-
-template<class T>
-inline
-SharingPtr<T>::SharingPtr()
- : ptr_(0),
- cntrl_(0)
-{
-}
-
-template<class T>
-template<class Y>
-SharingPtr<T>::SharingPtr(Y* p)
- : ptr_(p)
-{
- std::auto_ptr<Y> hold(p);
- typedef imp::shared_ptr_pointer<Y*> _CntrlBlk;
- cntrl_ = new _CntrlBlk(p);
- hold.release();
-}
-
-template<class T>
-template<class Y>
-inline
-SharingPtr<T>::SharingPtr(const SharingPtr<Y>& r, element_type *p)
- : ptr_(p),
- cntrl_(r.cntrl_)
-{
- if (cntrl_)
- cntrl_->add_shared();
-}
-
-template<class T>
-inline
-SharingPtr<T>::SharingPtr(const SharingPtr& r)
- : ptr_(r.ptr_),
- cntrl_(r.cntrl_)
-{
- if (cntrl_)
- cntrl_->add_shared();
-}
-
-template<class T>
-template<class Y>
-inline
-SharingPtr<T>::SharingPtr(const SharingPtr<Y>& r)
- : ptr_(r.ptr_),
- cntrl_(r.cntrl_)
-{
- if (cntrl_)
- cntrl_->add_shared();
-}
-
-template<class T>
-SharingPtr<T>::~SharingPtr()
-{
- if (cntrl_)
- cntrl_->release_shared();
-}
-
-template<class T>
-inline
-SharingPtr<T>&
-SharingPtr<T>::operator=(const SharingPtr& r)
-{
- SharingPtr(r).swap(*this);
- return *this;
-}
-
-template<class T>
-template<class Y>
-inline
-SharingPtr<T>&
-SharingPtr<T>::operator=(const SharingPtr<Y>& r)
-{
- SharingPtr(r).swap(*this);
- return *this;
-}
-
-template<class T>
-inline
-void
-SharingPtr<T>::swap(SharingPtr& r)
-{
- std::swap(ptr_, r.ptr_);
- std::swap(cntrl_, r.cntrl_);
-}
-
-template<class T>
-inline
-void
-SharingPtr<T>::reset()
-{
- SharingPtr().swap(*this);
-}
-
-template<class T>
-template<class Y>
-inline
-void
-SharingPtr<T>::reset(Y* p)
-{
- SharingPtr(p).swap(*this);
-}
-
-template<class T, class U>
-inline
-bool
-operator==(const SharingPtr<T>& __x, const SharingPtr<U>& __y)
-{
- return __x.get() == __y.get();
-}
-
-template<class T, class U>
-inline
-bool
-operator!=(const SharingPtr<T>& __x, const SharingPtr<U>& __y)
-{
- return !(__x == __y);
-}
-
-template<class T, class U>
-inline
-bool
-operator<(const SharingPtr<T>& __x, const SharingPtr<U>& __y)
-{
- return __x.get() < __y.get();
-}
-
-template<class T>
-inline
-void
-swap(SharingPtr<T>& __x, SharingPtr<T>& __y)
-{
- __x.swap(__y);
-}
-
-template<class T, class U>
-inline
-SharingPtr<T>
-static_pointer_cast(const SharingPtr<U>& r)
-{
- return SharingPtr<T>(r, static_cast<T*>(r.get()));
-}
-
-template<class T, class U>
-SharingPtr<T>
-const_pointer_cast(const SharingPtr<U>& r)
-{
- return SharingPtr<T>(r, const_cast<T*>(r.get()));
-}
-
-} // namespace lldb
-
-#endif // utility_SharingPtr_h_
More information about the lldb-commits
mailing list