You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.3 KiB
93 lines
2.3 KiB
//========= 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
|
|
|