aboutsummaryrefslogtreecommitdiff
path: root/src/libparsec/include/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libparsec/include/debug.h')
-rw-r--r--src/libparsec/include/debug.h227
1 files changed, 227 insertions, 0 deletions
diff --git a/src/libparsec/include/debug.h b/src/libparsec/include/debug.h
new file mode 100644
index 0000000..43a0967
--- /dev/null
+++ b/src/libparsec/include/debug.h
@@ -0,0 +1,227 @@
+/*
+ * PARSEC HEADER
+ * Debugging Support V1.20
+ *
+ * Copyright (c) Markus Hadwiger 1996-1999
+ * All Rights Reserved.
+ */
+
+#ifndef _DEBUG_H_
+#define _DEBUG_H_
+
+
+// debug control --------------------------------------------------------------
+//
+#define PARSEC_DEBUG
+
+
+// memory allocation control (also used in non-debug mode) --------------------
+//
+#define USE_ALIGNED_MEMBLOCKS
+
+
+// verbose assertions include the actual text of the evaluated expression -----
+//
+//#define VERBOSE_ASSERTIONS
+
+
+// debug control --------------------------------------------------------------
+
+//NOTE:
+// the following flags determine what checks are performed in debug mode.
+
+//#define LOG_MEMORY_BLOCKS
+//#define EXTENSIVE_MEMORY_CHECKS
+//#define CHECK_MEM_INTEGRITY_ON_FREE
+
+
+// ----------------------------------------------------------------------------
+
+
+
+#ifdef PARSEC_DEBUG
+
+ // debug only statement encapsulation (pass through)
+ #define DBG(x) x
+
+ // don't inline in debug build
+ #define INLINE
+
+ // put private functions into global namespace
+ #define PRIVATE
+ #define PUBLIC
+
+#else // PARSEC_DEBUG
+
+ // debug only statement encapsulation (eliminate)
+ #define DBG(x)
+
+ // do inlining in release build
+ #define INLINE inline
+
+ // declare private functions as static
+ #define PRIVATE static
+ #define PUBLIC
+
+ // print warning message, when compiling RELEASE version
+ #ifdef ENABLE_CHEAT_COMMANDS
+ #ifdef SYSTEM_COMPILER_MSVC
+ #pragma message ( "WARNING: ENABLE_CHEAT_COMMANDS is defined in RELEASE build !" )
+ #endif // SYSTEM_COMPILER_MSVC
+ #endif // ENABLE_CHEAT_COMMANDS
+
+#endif // PARSEC_DEBUG
+
+
+
+// define heap functions to use
+
+#define HEAP_ALLOC malloc // C runtime library malloc()
+#define HEAP_FREE free // C runtime library free()
+
+
+// used in function declarations to tell the compiler that the function won't return
+#ifdef SYSTEM_COMPILER_MSVC
+ #define FUNCTION_NORETURN(x) __declspec(noreturn) x
+#else
+ #define FUNCTION_NORETURN(x) x __attribute__((__noreturn__))
+#endif
+
+
+// external functions
+
+void* _AlignedMalloc( size_t );
+void _AlignedFree( void* );
+
+void _SysAssert( const char*, unsigned );
+void* _LogAllocMem( size_t );
+void _LogFreeMem( void* );
+void _CheckHeapBaseRef( void* );
+void _CheckHeapRef( void* );
+void _CheckMemIntegrity();
+
+
+// define function wrappers ---------------------------------------------------
+
+#ifdef PARSEC_DEBUG
+
+ #include <assert.h>
+ #define ASSERT( f ) assert( f )
+
+ #ifdef LOG_MEMORY_BLOCKS
+
+ #define ALLOCMEM( s ) _LogAllocMem( s )
+ #define FREEMEM( m ) _LogFreeMem( m )
+
+ #else // LOG_MEMORY_BLOCKS
+
+ #ifdef USE_ALIGNED_MEMBLOCKS
+
+ #define ALLOCMEM( s ) _AlignedMalloc( s )
+ #define FREEMEM( m ) _AlignedFree( m )
+
+ #else // USE_ALIGNED_MEMBLOCKS
+
+ #define ALLOCMEM( s ) HEAP_ALLOC( s )
+ #define FREEMEM( m ) HEAP_FREE( m )
+
+ #endif // USE_ALIGNED_MEMBLOCKS
+
+ #endif // LOG_MEMORY_BLOCKS
+
+ #ifdef EXTENSIVE_MEMORY_CHECKS
+
+ #define CHECKHEAPBASEREF( r ) _CheckHeapBaseRef( r )
+ #define CHECKHEAPREF( r ) _CheckHeapRef( r )
+ #define CHECKMEMINTEGRITY() _CheckMemIntegrity()
+
+ #else // EXTENSIVE_MEMORY_CHECKS
+
+ #define CHECKHEAPBASEREF( r ) {}
+ #define CHECKHEAPREF( r ) {}
+ #define CHECKMEMINTEGRITY() {}
+
+ #endif // EXTENSIVE_MEMORY_CHECKS
+
+#else // PARSEC_DEBUG
+
+ #ifdef USE_ALIGNED_MEMBLOCKS
+
+ #define ALLOCMEM( s ) _AlignedMalloc( s )
+ #define FREEMEM( m ) _AlignedFree( m )
+
+ #else // USE_ALIGNED_MEMBLOCKS
+
+ #define ALLOCMEM( s ) HEAP_ALLOC( s )
+ #define FREEMEM( m ) HEAP_FREE( m )
+
+ #endif // USE_ALIGNED_MEMBLOCKS
+
+ #define ASSERT( f ) {}
+ #define CHECKHEAPBASEREF( r ) {}
+ #define CHECKHEAPREF( r ) {}
+ #define CHECKMEMINTEGRITY() {}
+
+#endif // PARSEC_DEBUG
+
+
+
+
+
+
+// message control ------------------------------------------------------------
+//
+
+//NOTE: the following flags determine, what messages get printed out by the
+// various DBGTXT, UPDTXT, UPDTXT2, UPDTXT3, RMEVTXT, ADXTXT macros
+// these flags were moved from NET_CONF.H as they prove generally useful
+
+#define DEBUG_TEXTS
+#define SHOW_UPDATE_TEXT
+#define RMEV_MESSAGES
+#define PRINT_ADDRESSES
+
+#ifdef DEBUG_TEXTS
+ #define DBGTXT(x) { if ( AUX_ENABLE_CONSOLE_DEBUG_MESSAGES ) { x } else {} }
+#else // !DEBUG_TEXTS
+ #define DBGTXT(x)
+#endif // !DEBUG_TEXTS
+
+#ifdef SHOW_UPDATE_TEXT
+ #define UPDTXT(x) DBGTXT(x)
+#else // !SHOW_UPDATE_TEXT
+ #define UPDTXT(x)
+#endif // !SHOW_UPDATE_TEXT
+
+#ifdef SHOW_UPDATE_TEXT2
+ #define UPDTXT2(x) DBGTXT(x)
+#else // !SHOW_UPDATE_TEXT2
+ #define UPDTXT2(x)
+#endif // !SHOW_UPDATE_TEXT2
+
+#ifdef SHOW_UPDATE_TEXT3
+ #define UPDTXT3(x) DBGTXT(x)
+#else // !SHOW_UPDATE_TEXT3
+ #define UPDTXT3(x)
+#endif // !SHOW_UPDATE_TEXT3
+
+#ifdef RMEV_MESSAGES
+ #define RMEVTXT(x) DBGTXT(x)
+#else // !RMEV_MESSAGES
+ #define RMEVTXT(x)
+#endif // !RMEV_MESSAGES
+
+#ifdef PRINT_ADDRESSES
+ #define ADXTXT(x) DBGTXT(x)
+#else // !PRINT_ADDRESSES
+ #define ADXTXT(x)
+#endif // !PRINT_ADDRESSES
+
+#ifdef DMALLOC
+#include "dmalloc.h"
+#endif
+
+
+#endif // _DEBUG_H_
+
+