mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-16 05:37:00 +00:00
1
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
//========= 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
|
||||
Reference in New Issue
Block a user