aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/tier1/utlobjectreference.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /mp/src/public/tier1/utlobjectreference.h
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/public/tier1/utlobjectreference.h')
-rw-r--r--mp/src/public/tier1/utlobjectreference.h330
1 files changed, 165 insertions, 165 deletions
diff --git a/mp/src/public/tier1/utlobjectreference.h b/mp/src/public/tier1/utlobjectreference.h
index 6ff30213..da9d3033 100644
--- a/mp/src/public/tier1/utlobjectreference.h
+++ b/mp/src/public/tier1/utlobjectreference.h
@@ -1,165 +1,165 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// $Revision: $
-// $NoKeywords: $
-//===========================================================================//
-
-#ifndef UTLOBJECTREFERENCE_H
-#define UTLOBJECTREFERENCE_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "tier1/utlintrusivelist.h"
-#include "mathlib/mathlib.h"
-
-
-// Purpose: class for keeping track of all the references that exist to an object. When the object
-// being referenced is freed, all of the references pointing at it will become null.
-//
-// To Use:
-// Add a DECLARE_REFERENCED_CLASS to the class that you want to use CutlReferences with.
-// Replace pointers to that class with CUtlReferences.
-// Check these references for null in appropriate places.
-//
-// NOTE : You can still happily use pointers instead of references where you want to - these
-// pointers will not magically become null like references would, but if you know no one is going
-// to delete the underlying object during a partcular section of code, it doesn't
-// matter. Basically, CUtlReferences don't rely on every use of an object using one.
-
-
-
-
-template<class T> class CUtlReference
-{
-public:
- FORCEINLINE CUtlReference(void)
- {
- m_pNext = m_pPrev = NULL;
- m_pObject = NULL;
- }
-
- FORCEINLINE CUtlReference(T *pObj)
- {
- m_pNext = m_pPrev = NULL;
- AddRef( pObj );
- }
-
- FORCEINLINE ~CUtlReference(void)
- {
- KillRef();
- }
-
- FORCEINLINE void Set(T *pObj)
- {
- if ( m_pObject != pObj )
- {
- KillRef();
- AddRef( pObj );
- }
- }
-
- FORCEINLINE T * operator()(void) const
- {
- return m_pObject;
- }
-
- FORCEINLINE operator T*()
- {
- return m_pObject;
- }
-
- FORCEINLINE operator const T*() const
- {
- return m_pObject;
- }
-
- FORCEINLINE T* operator->()
- {
- return m_pObject;
- }
-
- FORCEINLINE const T* operator->() const
- {
- return m_pObject;
- }
-
- FORCEINLINE CUtlReference &operator=( const CUtlReference& otherRef )
- {
- Set( otherRef.m_pObject );
- return *this;
- }
-
- FORCEINLINE CUtlReference &operator=( T *pObj )
- {
- Set( pObj );
- return *this;
- }
-
-
- FORCEINLINE bool operator==( const CUtlReference& o ) const
- {
- return ( o.m_pObject == m_pObject );
- }
-
-public:
- CUtlReference *m_pNext;
- CUtlReference *m_pPrev;
-
- T *m_pObject;
-
- FORCEINLINE void AddRef( T *pObj )
- {
- m_pObject = pObj;
- if ( pObj )
- {
- pObj->m_References.AddToHead( this );
- }
- }
-
- FORCEINLINE void KillRef(void)
- {
- if ( m_pObject )
- {
- m_pObject->m_References.RemoveNode( this );
- m_pObject = NULL;
- }
- }
-
-};
-
-template<class T> class CUtlReferenceList : public CUtlIntrusiveDList< CUtlReference<T> >
-{
-public:
- ~CUtlReferenceList( void )
- {
- CUtlReference<T> *i = CUtlIntrusiveDList<CUtlReference<T> >::m_pHead;
- while( i )
- {
- CUtlReference<T> *n = i->m_pNext;
- i->m_pNext = NULL;
- i->m_pPrev = NULL;
- i->m_pObject = NULL;
- i = n;
- }
- CUtlIntrusiveDList<CUtlReference<T> >::m_pHead = NULL;
- }
-};
-
-
-//-----------------------------------------------------------------------------
-// Put this macro in classes that are referenced by CUtlReference
-//-----------------------------------------------------------------------------
-#define DECLARE_REFERENCED_CLASS( _className ) \
- private: \
- CUtlReferenceList< _className > m_References; \
- template<class T> friend class CUtlReference;
-
-
-#endif
-
-
-
-
-
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// $Revision: $
+// $NoKeywords: $
+//===========================================================================//
+
+#ifndef UTLOBJECTREFERENCE_H
+#define UTLOBJECTREFERENCE_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tier1/utlintrusivelist.h"
+#include "mathlib/mathlib.h"
+
+
+// Purpose: class for keeping track of all the references that exist to an object. When the object
+// being referenced is freed, all of the references pointing at it will become null.
+//
+// To Use:
+// Add a DECLARE_REFERENCED_CLASS to the class that you want to use CutlReferences with.
+// Replace pointers to that class with CUtlReferences.
+// Check these references for null in appropriate places.
+//
+// NOTE : You can still happily use pointers instead of references where you want to - these
+// pointers will not magically become null like references would, but if you know no one is going
+// to delete the underlying object during a partcular section of code, it doesn't
+// matter. Basically, CUtlReferences don't rely on every use of an object using one.
+
+
+
+
+template<class T> class CUtlReference
+{
+public:
+ FORCEINLINE CUtlReference(void)
+ {
+ m_pNext = m_pPrev = NULL;
+ m_pObject = NULL;
+ }
+
+ FORCEINLINE CUtlReference(T *pObj)
+ {
+ m_pNext = m_pPrev = NULL;
+ AddRef( pObj );
+ }
+
+ FORCEINLINE ~CUtlReference(void)
+ {
+ KillRef();
+ }
+
+ FORCEINLINE void Set(T *pObj)
+ {
+ if ( m_pObject != pObj )
+ {
+ KillRef();
+ AddRef( pObj );
+ }
+ }
+
+ FORCEINLINE T * operator()(void) const
+ {
+ return m_pObject;
+ }
+
+ FORCEINLINE operator T*()
+ {
+ return m_pObject;
+ }
+
+ FORCEINLINE operator const T*() const
+ {
+ return m_pObject;
+ }
+
+ FORCEINLINE T* operator->()
+ {
+ return m_pObject;
+ }
+
+ FORCEINLINE const T* operator->() const
+ {
+ return m_pObject;
+ }
+
+ FORCEINLINE CUtlReference &operator=( const CUtlReference& otherRef )
+ {
+ Set( otherRef.m_pObject );
+ return *this;
+ }
+
+ FORCEINLINE CUtlReference &operator=( T *pObj )
+ {
+ Set( pObj );
+ return *this;
+ }
+
+
+ FORCEINLINE bool operator==( const CUtlReference& o ) const
+ {
+ return ( o.m_pObject == m_pObject );
+ }
+
+public:
+ CUtlReference *m_pNext;
+ CUtlReference *m_pPrev;
+
+ T *m_pObject;
+
+ FORCEINLINE void AddRef( T *pObj )
+ {
+ m_pObject = pObj;
+ if ( pObj )
+ {
+ pObj->m_References.AddToHead( this );
+ }
+ }
+
+ FORCEINLINE void KillRef(void)
+ {
+ if ( m_pObject )
+ {
+ m_pObject->m_References.RemoveNode( this );
+ m_pObject = NULL;
+ }
+ }
+
+};
+
+template<class T> class CUtlReferenceList : public CUtlIntrusiveDList< CUtlReference<T> >
+{
+public:
+ ~CUtlReferenceList( void )
+ {
+ CUtlReference<T> *i = CUtlIntrusiveDList<CUtlReference<T> >::m_pHead;
+ while( i )
+ {
+ CUtlReference<T> *n = i->m_pNext;
+ i->m_pNext = NULL;
+ i->m_pPrev = NULL;
+ i->m_pObject = NULL;
+ i = n;
+ }
+ CUtlIntrusiveDList<CUtlReference<T> >::m_pHead = NULL;
+ }
+};
+
+
+//-----------------------------------------------------------------------------
+// Put this macro in classes that are referenced by CUtlReference
+//-----------------------------------------------------------------------------
+#define DECLARE_REFERENCED_CLASS( _className ) \
+ private: \
+ CUtlReferenceList< _className > m_References; \
+ template<class T> friend class CUtlReference;
+
+
+#endif
+
+
+
+
+