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
5 years ago
|
//========= 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
|