mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 14:16:50 +00:00
72 lines
2.9 KiB
C++
72 lines
2.9 KiB
C++
//========= 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
|