/** ** Supermodel ** A Sega Model 3 Arcade Emulator. ** Copyright 2011 Bart Trzynadlowski, Nik Henson ** ** This file is part of Supermodel. ** ** Supermodel 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. ** ** Supermodel 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 Supermodel. If not, see . **/ /* * Config.h * * Header file for program-wide configuration settings. */ #ifndef INCLUDED_CONFIG_H #define INCLUDED_CONFIG_H #include "Supermodel.h" /* * CConfig: * * Class defining all configuration settings. Inherits settings from classes * defined throughout the program. * * Conventions * ----------- * - Modules and classes should only use the members of their own configuration * class, so long as this is practical. This is left to programmer * discretion. The intent is that one class, CReal3D for example, should not * need information from another unrelated class, CModel3, unless explicitly * passed to it. On the other hand, the OSD layer may have a legitimate * need to use the renderer's video settings rather than maintaining its own. * - Member variables that have a limited range of allowable values must be * private and accessed through accessor members (SetVar(), GetVar()). The * accessors must ensure that a value outside the allowable range is never * returned and must clamp or reset to a default when an invalid setting * is passed. Warnings may be printed. * - Strings should be copied and retained locally. * - Constructors must be defined and must initialize to the program default. * - User-tunable settings should be stored here, not necessarily every * concievable parameter a class initializer might take. */ class CConfig: public COSDConfig, public Legacy3D::CLegacy3DConfig, public CModel3Config, public CSoundBoardConfig, public CDSBConfig, public CDriveBoardConfig { }; /* * g_Config: * * Program-wide configuration settings object. */ extern CConfig g_Config; #endif // INCLUDED_CONFIG_H