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 /sp/src/public/datamodel/dmvar.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'sp/src/public/datamodel/dmvar.h')
| -rw-r--r-- | sp/src/public/datamodel/dmvar.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/sp/src/public/datamodel/dmvar.h b/sp/src/public/datamodel/dmvar.h new file mode 100644 index 00000000..c19c2896 --- /dev/null +++ b/sp/src/public/datamodel/dmvar.h @@ -0,0 +1,93 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef DMVAR_H
+#define DMVAR_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+
+class CDmAttribute;
+
+//-----------------------------------------------------------------------------
+// Helper template for external attributes
+//-----------------------------------------------------------------------------
+template< typename T >
+class CDmaVar
+{
+ typedef typename CDmAttributeInfo< T >::StorageType_t D;
+
+public:
+ CDmaVar( );
+
+ // Setup to be used in OnConstruction methods of DmElements
+ void Init( CDmElement *pOwner, const char *pAttributeName, int flags = 0 );
+ void InitAndSet( CDmElement *pOwner, const char *pAttributeName, const T &value, int flags = 0 );
+
+ // Set/get
+ const T& Set( const T &val );
+ const T& Get() const;
+
+ // Cast operators
+ operator const T&() const;
+ const T* operator->() const;
+
+ // Assignment operator
+ const CDmaVar<T>& operator=( const CDmaVar<T>& src );
+
+ // Math utility operations
+ const T& operator=( const T &val );
+ const T& operator+=( const T &val );
+ const T& operator-=( const T &val );
+ const T& operator/=( const T &val );
+ const T& operator*=( const T &val );
+ const T& operator^=( const T &val );
+ const T& operator|=( const T &val );
+ const T& operator&=( const T &val );
+ T operator++();
+ T operator--();
+ T operator++( int ); // postfix version..
+ T operator--( int ); // postfix version..
+
+ // Returns the attribute associated with the var
+ CDmAttribute *GetAttribute();
+ const CDmAttribute *GetAttribute() const;
+
+ // Is the attribute dirty?
+ bool IsDirty() const;
+
+protected:
+ const T& Value() const;
+ T& Value();
+ const D& Storage() const;
+ D& Storage();
+
+private:
+ D m_Storage;
+
+protected:
+ CDmAttribute *m_pAttribute;
+};
+
+//-----------------------------------------------------------------------------
+// Specialization for string
+//-----------------------------------------------------------------------------
+class CDmaString : public CDmaVar< CUtlString >
+{
+public:
+ const char *Get( ) const;
+ operator const char*() const;
+
+ void Set( const char *pValue );
+ CDmaString &operator=( const char *src );
+ const CDmaString& operator=( const CDmaString& src );
+
+ // Returns strlen
+ int Length() const;
+};
+
+#endif // DMVAR_H
|