/*
** Command & Conquer Generals Zero Hour(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 .
*/
/////////////////////////////////////////////////////////////////////////EA-V1
// $File: //depot/GeneralsMD/Staging/code/Libraries/Source/debug/debug.h $
// $Author: mhoffe $
// $Revision: #1 $
// $DateTime: 2003/07/03 11:55:26 $
//
// ©2003 Electronic Arts
//
// Debugging module
//////////////////////////////////////////////////////////////////////////////
#ifdef _MSC_VER
# pragma once
#endif
#ifndef DEBUG_H // Include guard
#define DEBUG_H
/**
\page lib_var Library variants
Generally speaking there are four different library variants:
- Internal: all asserts/checks/logs, full optimizations (_INTERNAL macro defined)
- %Debug: all asserts/checks/logs, no optimizations (_DEBUG macro defined)
- Profile: all asserts/checks/logs, full optimizations, profiling active (_PROFILE macro defined)
- Release: no asserts/checks/logs, full optimizations
These variants will be broken down into separate features which
can be queried for by #ifdef(HAS_FEATURE):
Variant |
HAS_ASSERTS |
HAS_LOGS |
HAS_OPT |
HAS_PROFILE |
Internal |
Y |
Y |
Y |
|
%Debug |
Y |
Y |
|
|
Profile |
Y |
Y |
Y |
Y |
Release |
|
|
Y |
|
Library files have a suffix appended that depends on the
library variant:
- Internal: XXXInternal.lib
- %Debug: XXXDebug.lib
- Profile: XXXProfile.lib
- Release: XXX.lib
*/
#if defined(_DEBUG) && defined(_INTERNAL)
#error "Only either _DEBUG or _INTERNAL should ever be defined"
#endif
// Define which libraries to use.
#if defined(_INTERNAL)
# pragma comment (lib,"debuginternal.lib")
# define HAS_ASSERTS
# define HAS_LOGS
# define HAS_OPT
#elif defined(_DEBUG)
# pragma comment (lib,"debugdebug.lib")
# define HAS_ASSERTS
# define HAS_LOGS
#elif defined(_PROFILE)
# pragma comment (lib,"debugprofile.lib")
# define HAS_ASSERTS
# define HAS_LOGS
# define HAS_OPT
# define HAS_PROFILE
#else
# pragma comment (lib,"debug.lib")
# define HAS_OPT
#endif
// include all our public header files (use double quotes here)
#include "debug_doc.h"
#include "debug_macro.h"
#include "debug_io.h"
#include "debug_cmd.h"
#include "debug_stack.h"
#include "debug_debug.h"
#endif // DEBUG_H