//=========== Copyright Valve Corporation, All rights reserved. ===============// // // Purpose: //=============================================================================// #ifndef PANELHANDLE_H #define PANELHANDLE_H #ifdef _WIN32 #pragma once #endif #include "tier0/platform.h" namespace panorama { const uint64 k_ulInvalidPanelHandle64 = 0x00000000FFFFFFFF; // // Safe handle to a panel. To get pointer to actual panel, call IUIEngine::GetPanelPtr // struct PanelHandle_t { int32 m_iPanelIndex; // index into panel map uint32 m_unSerialNumber; // unique number used to ensure that panel at m_iPanelIndex is still the panel we originally pointed to bool operator<( const PanelHandle_t &rhs ) const { if ( m_iPanelIndex != rhs.m_iPanelIndex ) return m_iPanelIndex < rhs.m_iPanelIndex; return m_unSerialNumber < rhs.m_unSerialNumber; } bool operator==( const PanelHandle_t &rhs ) const { return (m_iPanelIndex == rhs.m_iPanelIndex) && (m_unSerialNumber == rhs.m_unSerialNumber); } bool operator!=( const PanelHandle_t &rhs ) const { return !(*this == rhs); } static const PanelHandle_t &InvalidHandle() { static PanelHandle_t s_invalid = { k_ulInvalidPanelHandle64 >> 32, 0xffffffff & k_ulInvalidPanelHandle64 }; return s_invalid; } }; } // namespace panorama #endif // PANELHANDLE_H