Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/core7/src/libraries/core/CorePrereqs.h @ 10518

Last change on this file since 10518 was 10509, checked in by landauf, 10 years ago

moved static application paths (root, executable, modules) into new class named ApplicationPaths
moved configurable data paths (data, log, config) into new class named ConfigurablePaths
removed PathConfig

  • Property svn:eol-style set to native
File size: 9.1 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Reto Grieder
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30@file
31@brief
32    Shared library macros, enums, constants and forward declarations for the core library
33*/
34
35#ifndef _CorePrereqs_H__
36#define _CorePrereqs_H__
37
38#include "OrxonoxConfig.h"
39#include <boost/version.hpp>
40
41//-----------------------------------------------------------------------
42// Shared library settings
43//-----------------------------------------------------------------------
44
45#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined( CORE_STATIC_BUILD )
46#  ifdef CORE_SHARED_BUILD
47#    define _CoreExport __declspec(dllexport)
48#  else
49#    if defined( __MINGW32__ )
50#      define _CoreExport
51#    else
52#      define _CoreExport __declspec(dllimport)
53#    endif
54#  endif
55#  define _CorePrivate
56#elif defined (ORXONOX_GCC_VISIBILITY)
57#  define _CoreExport  __attribute__ ((visibility("default")))
58#  define _CorePrivate __attribute__ ((visibility("hidden")))
59#else
60#  define _CoreExport
61#  define _CorePrivate
62#endif
63
64//-----------------------------------------------------------------------
65// Constants
66//-----------------------------------------------------------------------
67
68namespace orxonox
69{
70    static const uint32_t OBJECTID_UNKNOWN = static_cast<uint32_t>(-1);
71}
72
73//-----------------------------------------------------------------------
74// Enums
75//-----------------------------------------------------------------------
76
77namespace orxonox
78{
79    namespace ScopeID
80    {
81        typedef int Value;
82
83        //!A list of available scopes for the Scope template.
84        static const Value ROOT = 1;
85        static const Value GRAPHICS = 2;
86    }
87
88    namespace XMLPort
89    {
90        enum Mode
91        {
92            NOP,
93            LoadObject,
94            SaveObject,
95            ExpandObject
96        };
97    }
98
99    namespace ConfigFileType
100    {
101        enum Value
102        {
103            Settings,
104            JoyStickCalibration,
105            CommandHistory
106            // Don't forget to adjust the array size in the ConfigFileManager when adding a new entry here!
107        };
108    }
109
110    namespace KeybindMode
111    {
112        enum Value
113        {
114            OnPress,
115            OnHold,
116            OnRelease,
117            OnPressAndRelease,
118            None
119        };
120    };
121}
122
123//-----------------------------------------------------------------------
124// Forward declarations
125//-----------------------------------------------------------------------
126
127namespace orxonox
128{
129    typedef std::string LanguageEntryLabel;
130
131    template <class T, class U>
132    T orxonox_cast(U*);
133
134    class ApplicationPaths;
135    class BaseObject;
136    template <class T>
137    class ClassFactory;
138    template <class T>
139    class ClassFactoryWithContext;
140    template <class T>
141    class ClassIdentifier;
142    class ClassTreeMask;
143    class ClassTreeMaskIterator;
144    class ClassTreeMaskNode;
145    class ClassTreeMaskObjectIterator;
146    class CommandLineParser;
147    class CommandLineArgument;
148    class ConfigFile;
149    class ConfigFileEntry;
150    class ConfigFileEntryComment;
151    class ConfigFileEntryValue;
152    class ConfigFileManager;
153    class ConfigFileSection;
154    class Configurable;
155    class ConfigurablePaths;
156    class ConfigValueContainer;
157    class Context;
158    class Core;
159    class CoreConfig;
160    class Destroyable;
161    class DestroyLaterManager;
162    class DestructionListener;
163    class DynLib;
164    class DynLibManager;
165    struct Event;
166    class EventState;
167    class Factory;
168    class Game;
169    class GameConfig;
170    class GameState;
171    struct GameStateInfo;
172    struct GameStateTreeNode;
173    class GraphicsManager;
174    class GUIManager;
175    class Identifiable;
176    class Identifier;
177    template <class T>
178    class Iterator;
179    class Language;
180    class Listable;
181    class Loader;
182    class LuaFunctor;
183    class LuaState;
184    class MemoryArchive;
185    class MemoryArchiveFactory;
186    class ModuleInstance;
187    class Namespace;
188    class NamespaceNode;
189    template <class T>
190    class ObjectList;
191    class ObjectListBase;
192    class ObjectListBaseElement;
193    template <class T>
194    class ObjectListElement;
195    template <class T>
196    class ObjectListIterator;
197    class OgreWindowEventListener;
198    class OrxonoxClass;
199    class OrxonoxInterface;
200    struct ResourceInfo;
201    template <ScopeID::Value>
202    class Scope;
203    class ScopeManager;
204    class ScopedSingletonWrapper;
205    class SettingsConfigFile;
206    template <class T>
207    class SmartPtr;
208    class StaticallyInitializedInstance;
209    template <class T>
210    class SubclassIdentifier;
211    class Template;
212    class Thread;
213    class ThreadPool;
214    class UpdateListener;
215    class ViewportEventListener;
216    template <class T>
217    class WeakPtr;
218    class WindowEventListener;
219    class XMLFile;
220    class XMLNameListener;
221    template <class T, class O>
222    class XMLPortClassObjectContainer;
223    template <class T>
224    class XMLPortClassParamContainer;
225    class XMLPortObjectContainer;
226    class XMLPortParamContainer;
227
228    // Command
229    class ArgumentCompleter;
230    class ArgumentCompletionListElement;
231    class CommandEvaluation;
232    class ConsoleCommand;
233    class ConsoleCommandManager;
234    class Executor;
235    template <class T>
236    class ExecutorMember;
237    class ExecutorStatic;
238    class Functor;
239    template <class O>
240    class FunctorMember;
241    typedef FunctorMember<void> FunctorStatic;
242    template <class F, class O>
243    class FunctorPointer;
244    class IOConsole;
245    class IRC;
246    class Shell;
247    class ShellListener;
248    class TclBind;
249    struct TclInterpreterBundle;
250    template <class T>
251    class TclThreadList;
252    class TclThreadManager;
253
254    // Input
255    class BaseCommand;
256    class BufferedParamCommand;
257    class Button;
258    class HalfAxis;
259    class InputBuffer;
260    class InputDevice;
261    template <class Traits>
262    class InputDeviceTemplated;
263    class InputHandler;
264    class InputManager;
265    class InputState;
266    struct InputStatePriority;
267    class JoyStickQuantityListener;
268    class JoyStick;
269    class KeyBinder;
270    class KeyBinderManager;
271    class Keyboard;
272    class KeyDetector;
273    class KeyEvent;
274    class Mouse;
275    class ParamCommand;
276    class SimpleCommand;
277}
278
279#include "command/FunctorPtr.h"
280#include "command/ExecutorPtr.h"
281
282// CppTcl
283namespace Tcl
284{
285    class interpreter;
286    class object;
287}
288
289// Boost
290namespace boost
291{
292#if (BOOST_VERSION < 104400)
293
294    namespace filesystem
295    {
296        struct path_traits;
297        template <class String, class Traits> class basic_path;
298        typedef basic_path<std::string, path_traits> path;
299    }
300
301#elif (BOOST_VERSION < 105000)
302
303# if BOOST_FILESYSTEM_VERSION == 2
304    namespace filesystem2
305    {
306        struct path_traits;
307        template <class String, class Traits> class basic_path;
308        typedef basic_path<std::string, path_traits> path;
309    }
310    namespace filesystem
311    {
312        using filesystem2::basic_path;
313        using filesystem2::path_traits;
314        using filesystem2::path;
315    }
316# elif BOOST_FILESYSTEM_VERSION == 3
317    namespace filesystem3
318    {
319        class path;
320    }
321    namespace filesystem
322    {
323        using filesystem3::path;
324    }
325# endif
326
327#else
328
329    namespace filesystem
330    {
331        class path;
332    }
333
334#endif
335
336    class thread;
337    class mutex;
338    class shared_mutex;
339    class condition_variable;
340}
341
342// Ogre
343namespace Ogre
344{
345    class DataStream;
346    template <class T> class SharedPtr;
347    typedef SharedPtr<DataStream> DataStreamPtr;
348}
349namespace orxonox
350{
351    // Import the Ogre::DataStream
352    using Ogre::DataStream;
353    using Ogre::DataStreamPtr;
354}
355
356// CEGUI
357namespace CEGUI
358{
359    class DefaultLogger;
360    class Logger;
361    class LuaScriptModule;
362
363#if CEGUI_VERSION_MAJOR < 1 && CEGUI_VERSION_MINOR < 7
364    class OgreCEGUIRenderer;
365    class OgreCEGUIResourceProvider;
366    class OgreCEGUITexture;
367#else
368    class OgreRenderer;
369    class OgreResourceProvider;
370    class OgreImageCodec;
371#endif
372}
373
374// Lua
375struct lua_State;
376
377// TinyXML and TinyXML++
378class TiXmlString;
379class TiXmlOutStream;
380class TiXmlNode;
381class TiXmlHandle;
382class TiXmlDocument;
383class TiXmlElement;
384class TiXmlComment;
385class TiXmlUnknown;
386class TiXmlAttribute;
387class TiXmlText;
388class TiXmlDeclaration;
389class TiXmlParsingData;
390namespace ticpp
391{
392    class Document;
393    class Element;
394    class Declaration;
395    class StylesheetReference;
396    class Text;
397    class Comment;
398    class Attribute;
399}
400namespace orxonox
401{
402    using ticpp::Element;
403}
404
405#endif /* _CorePrereqs_H__ */
Note: See TracBrowser for help on using the repository browser.