/* ** 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_