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.
72 lines
2.9 KiB
72 lines
2.9 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//============================================================================= |
|
|
|
#ifndef DMXLOADER_H |
|
#define DMXLOADER_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
//----------------------------------------------------------------------------- |
|
// Forward declarations |
|
//----------------------------------------------------------------------------- |
|
class CUtlBuffer; |
|
class CDmxElement; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Serialization/Unserialization |
|
//----------------------------------------------------------------------------- |
|
bool SerializeDMX( CUtlBuffer &buf, CDmxElement *pRoot, const char *pFileName = NULL ); |
|
bool SerializeDMX( const char *pFileName, const char *pPathID, bool bTextMode, CDmxElement *pRoot ); |
|
|
|
bool UnserializeDMX( CUtlBuffer &buf, CDmxElement **ppRoot, const char *pFileName = NULL ); |
|
bool UnserializeDMX( const char *pFileName, const char *pPathID, bool bTextMode, CDmxElement **ppRoot ); |
|
|
|
//----------------------------------------------------------------------------- |
|
// DMX elements/attributes can only be accessed inside a dmx context |
|
//----------------------------------------------------------------------------- |
|
void BeginDMXContext( ); |
|
void EndDMXContext( bool bDecommitMemory ); |
|
void DecommitDMXMemory(); |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Helper macro |
|
//----------------------------------------------------------------------------- |
|
class CDMXContextHelper |
|
{ |
|
public: |
|
CDMXContextHelper( bool bDecommitMemory ) { m_bDecommitMemory = bDecommitMemory; BeginDMXContext(); } |
|
~CDMXContextHelper() { EndDMXContext( m_bDecommitMemory ); } |
|
|
|
private: |
|
bool m_bDecommitMemory; |
|
}; |
|
|
|
#define DECLARE_DMX_CONTEXT( ) CDMXContextHelper __dmxContextHelper( true ); |
|
#define DECLARE_DMX_CONTEXT_NODECOMMIT( ) CDMXContextHelper __dmxContextHelper( false ); |
|
#define DECLARE_DMX_CONTEXT_DECOMMIT( _decommit ) CDMXContextHelper __dmxContextHelper( _decommit ); |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Used for allocation. All will be freed when we leave the DMX context |
|
//----------------------------------------------------------------------------- |
|
void* DMXAlloc( size_t size ); |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Helper macro |
|
//----------------------------------------------------------------------------- |
|
#define DECLARE_DMX_ALLOCATOR( ) \ |
|
public: \ |
|
inline void* operator new( size_t size ) { MEM_ALLOC_CREDIT_( "DMXAlloc" ); return DMXAlloc(size); } \ |
|
inline void* operator new( size_t size, int nBlockUse, const char *pFileName, int nLine ) { MEM_ALLOC_CREDIT_( "DMXAlloc" ); return DMXAlloc(size); } \ |
|
inline void operator delete( void* p ) { } \ |
|
inline void operator delete( void* p, int nBlockUse, const char *pFileName, int nLine ) { } \ |
|
|
|
#endif // DMXLOADER_H
|