aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/dmxloader/dmxloader.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/dmxloader/dmxloader.h')
-rw-r--r--mp/src/public/dmxloader/dmxloader.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/mp/src/public/dmxloader/dmxloader.h b/mp/src/public/dmxloader/dmxloader.h
new file mode 100644
index 00000000..5e744930
--- /dev/null
+++ b/mp/src/public/dmxloader/dmxloader.h
@@ -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 \ No newline at end of file