[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