Files
2022-06-26 19:14:49 +02:00

122 lines
3.0 KiB
C++

/* ScummVM Tools
*
* ScummVM Tools is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* Additionally this file is based on the ScummVM source code.
* Copyright information for the ScummVM source code is
* available in the COPYRIGHT file of the ScummVM source
* distribution.
*
* 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 <http://www.gnu.org/licenses/>.
*
*/
#ifndef COMMON_UTIL_H
#define COMMON_UTIL_H
#include "common/scummsys.h"
#ifdef MIN
#undef MIN
#endif
#ifdef MAX
#undef MAX
#endif
template<typename T> inline T ABS (T x) { return (x>=0) ? x : -x; }
template<typename T> inline T MIN (T a, T b) { return (a<b) ? a : b; }
template<typename T> inline T MAX (T a, T b) { return (a>b) ? a : b; }
template<typename T> inline T CLIP (T v, T amin, T amax)
{ if (v < amin) return amin; else if (v > amax) return amax; else return v; }
/**
* Template method which swaps the vaulues of its two parameters.
*/
template<typename T> inline void SWAP(T &a, T &b) { T tmp = a; a = b; b = tmp; }
/**
* Macro which determines the number of entries in a fixed size array.
*/
#define ARRAYSIZE(x) ((int)(sizeof(x) / sizeof(x[0])))
namespace Common {
/**
* List of game language.
*/
enum Language {
EN_ANY, // Generic English (when only one game version exist)
EN_USA,
EN_GRB,
DE_DEU,
FR_FRA,
IT_ITA,
PT_BRA,
ES_ESP,
JA_JPN,
ZH_TWN,
KO_KOR,
SE_SWE,
HB_ISR,
RU_RUS,
CZ_CZE,
NL_NLD,
NB_NOR,
PL_POL,
UNK_LANG = -1 // Use default language (i.e. none specified)
};
/**
* List of game platforms. Specifying a platform for a target can be used to
* give the game engines a hint for which platform the game data file are.
* This may be optional or required, depending on the game engine and the
* game in question.
*/
enum Platform {
kPlatformPC,
kPlatformAmiga,
kPlatformAtariST,
kPlatformMacintosh,
kPlatformFMTowns,
kPlatformWindows,
kPlatformNES,
kPlatformC64,
kPlatformLinux,
kPlatformAcorn,
kPlatformSegaCD,
kPlatform3DO,
// kPlatformPCEngine,
kPlatformUnknown = -1
};
} // End of Common namespace
/* Misc stuff */
void NORETURN_PRE error(const char *s, ...) NORETURN_POST;
void warning(const char *s, ...);
void debug(int level, const char *s, ...);
void notice(const char *s, ...);
void hexdump(const byte * data, int len, int bytesPerLine = 16, int startOffset = 0);
#endif