mirror of
https://github.com/celisej567/source-engine.git
synced 2026-01-04 18:09:53 +03:00
1
This commit is contained in:
169
game/shared/ehandle.h
Normal file
169
game/shared/ehandle.h
Normal file
@@ -0,0 +1,169 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// $NoKeywords: $
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef EHANDLE_H
|
||||
#define EHANDLE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if defined( _DEBUG ) && defined( GAME_DLL )
|
||||
#include "tier0/dbg.h"
|
||||
#include "cbase.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include "const.h"
|
||||
#include "basehandle.h"
|
||||
#include "entitylist_base.h"
|
||||
|
||||
|
||||
class IHandleEntity;
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------------------------------- //
|
||||
// Game-code CBaseHandle implementation.
|
||||
// -------------------------------------------------------------------------------------------------- //
|
||||
|
||||
inline IHandleEntity* CBaseHandle::Get() const
|
||||
{
|
||||
extern CBaseEntityList *g_pEntityList;
|
||||
return g_pEntityList->LookupEntity( *this );
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------------------------------- //
|
||||
// CHandle.
|
||||
// -------------------------------------------------------------------------------------------------- //
|
||||
template< class T >
|
||||
class CHandle : public CBaseHandle
|
||||
{
|
||||
public:
|
||||
|
||||
CHandle();
|
||||
CHandle( int iEntry, int iSerialNumber );
|
||||
CHandle( const CBaseHandle &handle );
|
||||
CHandle( T *pVal );
|
||||
|
||||
// The index should have come from a call to ToInt(). If it hasn't, you're in trouble.
|
||||
static CHandle<T> FromIndex( int index );
|
||||
|
||||
T* Get() const;
|
||||
void Set( const T* pVal );
|
||||
|
||||
operator T*();
|
||||
operator T*() const;
|
||||
|
||||
bool operator !() const;
|
||||
bool operator==( T *val ) const;
|
||||
bool operator!=( T *val ) const;
|
||||
const CBaseHandle& operator=( const T *val );
|
||||
|
||||
T* operator->() const;
|
||||
};
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
// Inlines.
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
template<class T>
|
||||
CHandle<T>::CHandle()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
CHandle<T>::CHandle( int iEntry, int iSerialNumber )
|
||||
{
|
||||
Init( iEntry, iSerialNumber );
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
CHandle<T>::CHandle( const CBaseHandle &handle )
|
||||
: CBaseHandle( handle )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
CHandle<T>::CHandle( T *pObj )
|
||||
{
|
||||
Term();
|
||||
Set( pObj );
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
inline CHandle<T> CHandle<T>::FromIndex( int index )
|
||||
{
|
||||
CHandle<T> ret;
|
||||
ret.m_Index = index;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
inline T* CHandle<T>::Get() const
|
||||
{
|
||||
return (T*)CBaseHandle::Get();
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
inline CHandle<T>::operator T *()
|
||||
{
|
||||
return Get( );
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline CHandle<T>::operator T *() const
|
||||
{
|
||||
return Get( );
|
||||
}
|
||||
|
||||
|
||||
template<class T>
|
||||
inline bool CHandle<T>::operator !() const
|
||||
{
|
||||
return !Get();
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline bool CHandle<T>::operator==( T *val ) const
|
||||
{
|
||||
return Get() == val;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline bool CHandle<T>::operator!=( T *val ) const
|
||||
{
|
||||
return Get() != val;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void CHandle<T>::Set( const T* pVal )
|
||||
{
|
||||
CBaseHandle::Set( reinterpret_cast<const IHandleEntity*>(pVal) );
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline const CBaseHandle& CHandle<T>::operator=( const T *val )
|
||||
{
|
||||
Set( val );
|
||||
return *this;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
T* CHandle<T>::operator -> () const
|
||||
{
|
||||
return Get();
|
||||
}
|
||||
|
||||
|
||||
#endif // EHANDLE_H
|
||||
Reference in New Issue
Block a user