Counter Strike : Global Offensive Source Code
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.
|
|
//====== Copyright � 1996-2004, 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< CUtlSymbolLarge > { public: const char *GetString() const; const char *Get( ) const; operator const char*() const;
void InitAndSet( CDmElement *pOwner, const char *pAttributeName, const char *pValue, int flags = 0 ); void Set( const char *pValue ); CDmaString &operator=( const char *src ); const CDmaString& operator=( const CDmaString& src );
// Returns strlen
int Length() const; bool IsEmpty() const; };
//-----------------------------------------------------------------------------
//
// Inline methods for CDmaString
//
//-----------------------------------------------------------------------------
inline const char *CDmaString::GetString() const { return this->Value().String(); } #endif // DMVAR_H
|