diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/vgui_controls/PHandle.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/vgui_controls/PHandle.h')
| -rw-r--r-- | mp/src/public/vgui_controls/PHandle.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/mp/src/public/vgui_controls/PHandle.h b/mp/src/public/vgui_controls/PHandle.h new file mode 100644 index 00000000..8a129061 --- /dev/null +++ b/mp/src/public/vgui_controls/PHandle.h @@ -0,0 +1,86 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef PHANDLE_H
+#define PHANDLE_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui/VGUI.h>
+
+namespace vgui
+{
+
+class Panel;
+
+//-----------------------------------------------------------------------------
+// Purpose: Safe pointer class for handling Panel or derived panel classes
+//-----------------------------------------------------------------------------
+class PHandle
+{
+public:
+ PHandle() : m_iPanelID(INVALID_PANEL) {} //m_iSerialNumber(0), m_pListEntry(0) {}
+
+ Panel *Get();
+ Panel *Set( Panel *pPanel );
+ Panel *Set( HPanel hPanel );
+
+ operator Panel *() { return Get(); }
+ Panel * operator ->() { return Get(); }
+ Panel * operator = (Panel *pPanel) { return Set(pPanel); }
+
+ bool operator == (Panel *pPanel) { return (Get() == pPanel); }
+ operator bool () { return Get() != 0; }
+
+private:
+ HPanel m_iPanelID;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Safe pointer class to just convert between VPANEL's and PHandle
+//-----------------------------------------------------------------------------
+class VPanelHandle
+{
+public:
+ VPanelHandle() : m_iPanelID(INVALID_PANEL) {}
+
+ VPANEL Get();
+ VPANEL Set( VPANEL pPanel );
+
+ operator VPANEL () { return Get(); }
+ VPANEL operator = (VPANEL pPanel) { return Set(pPanel); }
+
+ bool operator == (VPANEL pPanel) { return (Get() == pPanel); }
+ operator bool () { return Get() != 0; }
+
+private:
+ HPanel m_iPanelID;
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: DHANDLE is a templated version of PHandle
+//-----------------------------------------------------------------------------
+template< class PanelType >
+class DHANDLE : public PHandle
+{
+public:
+ PanelType *Get() { return (PanelType *)PHandle::Get(); }
+ PanelType *Set( PanelType *pPanel ) { return (PanelType *)PHandle::Set(pPanel); }
+ PanelType *Set( HPanel hPanel ) { return (PanelType *)PHandle::Set(hPanel); }
+
+ operator PanelType *() { return (PanelType *)PHandle::Get(); }
+ PanelType * operator ->() { return (PanelType *)PHandle::Get(); }
+ PanelType * operator = (PanelType *pPanel) { return (PanelType *)PHandle::Set(pPanel); }
+ bool operator == (Panel *pPanel) { return (PHandle::Get() == pPanel); }
+ operator bool () { return PHandle::Get() != NULL; }
+};
+
+};
+
+#endif // PHANDLE_H
|