/*
** Command & Conquer Generals(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
// DownloadDebug.h
#ifndef __DOWNLOADDEBUG_H_
#define __DOWNLOADDEBUG_H_
// BGC 3/27/03 - added this for disabling debug logging for "release" worldbuilder.
// uncomment this line to remove logging from game spy code.
//#define DISABLE_DEBUG_LOGGING
#if defined(NDEBUG) || defined(DISABLE_DEBUG_LOGGING)
#define DEBUG_LOG(exp) ((void)0)
#else
#ifdef __cplusplus
extern "C" {
#endif
#include
extern void DebugCrash( const char *fmt, ... );
extern void DebugLog( const char *fmt, ... );
/*
Yeah, it's a sleazy global, since we can't reasonably add
any args to DebugCrash due to the varargs nature of it.
We'll just let it slide in this case...
*/
extern char* TheCurrentIgnoreCrashPtr;
#define DEBUG_CRASH(m) \
do { \
{ \
static char ignoreCrash = 0; \
if (!ignoreCrash) { \
TheCurrentIgnoreCrashPtr = &ignoreCrash; \
DebugCrash m ; \
TheCurrentIgnoreCrashPtr = NULL; \
} \
} \
} while (0)
#define DEBUG_LOG(x) do { DebugLog x; } while (0)
#define DEBUG_ASSERTCRASH(c, m) do { { if (!(c)) DEBUG_CRASH(m); } } while (0)
#ifdef __cplusplus
}
#endif
#endif // NDEBUG
#endif //__DOWNLOADDEBUG_H_