]>
git.saurik.com Git - apple/javascriptcore.git/blob - wtf/RefCounted.h
   2  * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 
   4  * This library is free software; you can redistribute it and/or 
   5  * modify it under the terms of the GNU Library General Public 
   6  * License as published by the Free Software Foundation; either 
   7  * version 2 of the License, or (at your option) any later version. 
   9  * This library is distributed in the hope that it will be useful, 
  10  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
  11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
  12  * Library General Public License for more details. 
  14  * You should have received a copy of the GNU Library General Public License 
  15  * along with this library; see the file COPYING.LIB.  If not, write to 
  16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
  17  * Boston, MA 02110-1301, USA. 
  24 #include <wtf/Assertions.h> 
  25 #include <wtf/Noncopyable.h> 
  29 template<class T
> class RefCounted 
: Noncopyable 
{ 
  31     RefCounted(int initialRefCount 
= 0) 
  32         : m_refCount(initialRefCount
) 
  34         , m_deletionHasBegun(false) 
  41         ASSERT(!m_deletionHasBegun
); 
  47         ASSERT(!m_deletionHasBegun
); 
  48         ASSERT(m_refCount 
> 0); 
  49         if (m_refCount 
== 1) { 
  51             m_deletionHasBegun 
= true; 
  53             delete static_cast<T
*>(this); 
  60         ASSERT(!m_deletionHasBegun
); 
  61         return m_refCount 
== 1; 
  72     bool m_deletionHasBegun
; 
  78 using WTF::RefCounted
; 
  80 #endif // RefCounted_h