aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/tier1/utlflags.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/tier1/utlflags.h')
-rw-r--r--mp/src/public/tier1/utlflags.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/mp/src/public/tier1/utlflags.h b/mp/src/public/tier1/utlflags.h
new file mode 100644
index 00000000..f18f1e15
--- /dev/null
+++ b/mp/src/public/tier1/utlflags.h
@@ -0,0 +1,124 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Simple class to make it easier to deal with flags
+//
+//=============================================================================
+
+#ifndef UTLFLAGS_H
+#define UTLFLAGS_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "tier0/dbg.h"
+
+
+//-----------------------------------------------------------------------------
+// Simple class to make it easier to deal with flags
+//-----------------------------------------------------------------------------
+template< class T >
+class CUtlFlags
+{
+public:
+ CUtlFlags( int nInitialFlags = 0 );
+
+ // Flag setting
+ void SetFlag( int nFlagMask );
+ void SetFlag( int nFlagMask, bool bEnable );
+
+ // Flag clearing
+ void ClearFlag( int nFlagMask );
+ void ClearAllFlags();
+ bool IsFlagSet( int nFlagMask ) const;
+
+ // Is any flag set?
+ bool IsAnyFlagSet() const;
+
+private:
+ T m_nFlags;
+};
+
+
+//-----------------------------------------------------------------------------
+// Constructor
+//-----------------------------------------------------------------------------
+template< class T >
+CUtlFlags<T>::CUtlFlags( int nInitialFlags )
+{
+ // Makes sure we didn't truncate
+ Assert( nInitialFlags == (T)nInitialFlags );
+
+ m_nFlags = (T)nInitialFlags;
+}
+
+
+//-----------------------------------------------------------------------------
+// Set flags
+//-----------------------------------------------------------------------------
+template< class T >
+void CUtlFlags<T>::SetFlag( int nFlagMask )
+{
+ // Makes sure we didn't truncate
+ Assert( nFlagMask == (T)nFlagMask );
+
+ m_nFlags |= (T)nFlagMask;
+}
+
+template< class T >
+void CUtlFlags<T>::SetFlag( int nFlagMask, bool bEnable )
+{
+ // Makes sure we didn't truncate
+ Assert( nFlagMask == (T)nFlagMask );
+
+ if ( bEnable )
+ {
+ m_nFlags |= (T)nFlagMask;
+ }
+ else
+ {
+ m_nFlags &= ~((T)nFlagMask);
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Clear flags
+//-----------------------------------------------------------------------------
+template< class T >
+void CUtlFlags<T>::ClearFlag( int nFlagMask )
+{
+ // Makes sure we didn't truncate
+ Assert( nFlagMask == (T)nFlagMask );
+ m_nFlags &= ~((T)nFlagMask);
+}
+
+template< class T >
+void CUtlFlags<T>::ClearAllFlags()
+{
+ m_nFlags = 0;
+}
+
+
+//-----------------------------------------------------------------------------
+// Is a flag set?
+//-----------------------------------------------------------------------------
+template< class T >
+bool CUtlFlags<T>::IsFlagSet( int nFlagMask ) const
+{
+ // Makes sure we didn't truncate
+ Assert( nFlagMask == (T)nFlagMask );
+ return ( m_nFlags & nFlagMask ) != 0;
+}
+
+
+//-----------------------------------------------------------------------------
+// Is any flag set?
+//-----------------------------------------------------------------------------
+template< class T >
+bool CUtlFlags<T>::IsAnyFlagSet() const
+{
+ return m_nFlags != 0;
+}
+
+
+#endif // UTLFLAGS_H