Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/trunk/src/libraries/core/CorePrereqs.h @ 9690

Last change on this file since 9690 was 9675, checked in by landauf, 11 years ago

merged branch 'libs' back to trunk. orxonox now compiles and runs with ogre 1.8 and it compiles (but doesn't run) with cegui 0.8

  • Property svn:eol-style set to native
File size: 8.6 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 XMLPort
80    {
81        enum Mode
82        {
83            NOP,
84            LoadObject,
85            SaveObject,
86            ExpandObject
87        };
88    }
89
90    namespace ConfigFileType
91    {
92        enum Value
93        {
94            Settings,
95            JoyStickCalibration,
96            CommandHistory
97            // Don't forget to adjust the array size in the ConfigFileManager when adding a new entry here!
98        };
99    }
100
101    namespace KeybindMode
102    {
103        enum Value
104        {
105            OnPress,
106            OnHold,
107            OnRelease,
108            None
109        };
110    };
111}
112
113//-----------------------------------------------------------------------
114// Forward declarations
115//-----------------------------------------------------------------------
116
117namespace orxonox
118{
119    typedef std::string LanguageEntryLabel;
120
121    template <class T, class U>
122    T orxonox_cast(U*);
123
124    class BaseObject;
125    template <class T>
126    class ClassFactory;
127    template <class T>
128    class ClassFactoryWithContext;
129    template <class T>
130    class ClassIdentifier;
131    class ClassTreeMask;
132    class ClassTreeMaskIterator;
133    class ClassTreeMaskNode;
134    class ClassTreeMaskObjectIterator;
135    class CommandLineParser;
136    class CommandLineArgument;
137    class ConfigFile;
138    class ConfigFileEntry;
139    class ConfigFileEntryComment;
140    class ConfigFileEntryValue;
141    class ConfigFileManager;
142    class ConfigFileSection;
143    class Configurable;
144    class ConfigValueContainer;
145    class Context;
146    class Core;
147    class Destroyable;
148    class DestructionListener;
149    class DynLib;
150    class DynLibManager;
151    struct Event;
152    class EventState;
153    class Factory;
154    class Game;
155    class GameState;
156    struct GameStateInfo;
157    struct GameStateTreeNode;
158    class GraphicsManager;
159    class GUIManager;
160    class Identifiable;
161    class Identifier;
162    template <class T>
163    class Iterator;
164    class Language;
165    class Listable;
166    class LuaFunctor;
167    class LuaState;
168    class MemoryArchive;
169    class MemoryArchiveFactory;
170    class Namespace;
171    class NamespaceNode;
172    template <class T>
173    class ObjectList;
174    class ObjectListBase;
175    class ObjectListBaseElement;
176    template <class T>
177    class ObjectListElement;
178    template <class T>
179    class ObjectListIterator;
180    class OgreWindowEventListener;
181    class OrxonoxClass;
182    class OrxonoxInterface;
183    class PathConfig;
184    struct ResourceInfo;
185    class SettingsConfigFile;
186    template <class T>
187    class SmartPtr;
188    template <class T>
189    class SubclassIdentifier;
190    class Template;
191    class Thread;
192    class ThreadPool;
193    class ViewportEventListener;
194    template <class T>
195    class WeakPtr;
196    class WindowEventListener;
197    class XMLFile;
198    class XMLNameListener;
199    template <class T, class O>
200    class XMLPortClassObjectContainer;
201    template <class T>
202    class XMLPortClassParamContainer;
203    class XMLPortObjectContainer;
204    class XMLPortParamContainer;
205
206    // Command
207    class ArgumentCompleter;
208    class ArgumentCompletionListElement;
209    class CommandEvaluation;
210    class ConsoleCommand;
211    class Executor;
212    template <class T>
213    class ExecutorMember;
214    class ExecutorStatic;
215    class Functor;
216    template <class O>
217    class FunctorMember;
218    typedef FunctorMember<void> FunctorStatic;
219    template <class F, class O>
220    class FunctorPointer;
221    class IOConsole;
222    class IRC;
223    class Shell;
224    class ShellListener;
225    class TclBind;
226    struct TclInterpreterBundle;
227    template <class T>
228    class TclThreadList;
229    class TclThreadManager;
230
231    // Input
232    class BaseCommand;
233    class BufferedParamCommand;
234    class Button;
235    class HalfAxis;
236    class InputBuffer;
237    class InputDevice;
238    template <class Traits>
239    class InputDeviceTemplated;
240    class InputHandler;
241    class InputManager;
242    class InputState;
243    struct InputStatePriority;
244    class JoyStickQuantityListener;
245    class JoyStick;
246    class KeyBinder;
247    class KeyBinderManager;
248    class Keyboard;
249    class KeyDetector;
250    class KeyEvent;
251    class Mouse;
252    class ParamCommand;
253    class SimpleCommand;
254}
255
256#include "command/FunctorPtr.h"
257#include "command/ExecutorPtr.h"
258
259// CppTcl
260namespace Tcl
261{
262    class interpreter;
263    class object;
264}
265
266// Boost
267namespace boost
268{
269#if (BOOST_VERSION < 104400)
270
271    namespace filesystem
272    {
273        struct path_traits;
274        template <class String, class Traits> class basic_path;
275        typedef basic_path<std::string, path_traits> path;
276    }
277
278#elif (BOOST_VERSION < 104800)
279
280# if BOOST_FILESYSTEM_VERSION == 2
281    namespace filesystem2
282    {
283        struct path_traits;
284        template <class String, class Traits> class basic_path;
285        typedef basic_path<std::string, path_traits> path;
286    }
287    namespace filesystem
288    {
289        using filesystem2::basic_path;
290        using filesystem2::path_traits;
291        using filesystem2::path;
292    }
293# elif BOOST_FILESYSTEM_VERSION == 3
294    namespace filesystem3
295    {
296        class path;
297    }
298    namespace filesystem
299    {
300        using filesystem3::path;
301    }
302# endif
303
304#else
305
306    // TODO: Check this once boost 1.48 is released
307    namespace filesystem
308    {
309        class path;
310    }
311
312#endif
313
314    class thread;
315    class mutex;
316    class shared_mutex;
317    class condition_variable;
318}
319
320// Ogre
321namespace Ogre
322{
323    class DataStream;
324    template <class T> class SharedPtr;
325    typedef SharedPtr<DataStream> DataStreamPtr;
326}
327namespace orxonox
328{
329    // Import the Ogre::DataStream
330    using Ogre::DataStream;
331    using Ogre::DataStreamPtr;
332}
333
334// CEGUI
335namespace CEGUI
336{
337    class DefaultLogger;
338    class Logger;
339    class LuaScriptModule;
340
341#if CEGUI_VERSION_MAJOR < 1 && CEGUI_VERSION_MINOR < 7
342    class OgreCEGUIRenderer;
343    class OgreCEGUIResourceProvider;
344    class OgreCEGUITexture;
345#else
346    class OgreRenderer;
347    class OgreResourceProvider;
348    class OgreImageCodec;
349#endif
350}
351
352// Lua
353struct lua_State;
354
355// TinyXML and TinyXML++
356class TiXmlString;
357class TiXmlOutStream;
358class TiXmlNode;
359class TiXmlHandle;
360class TiXmlDocument;
361class TiXmlElement;
362class TiXmlComment;
363class TiXmlUnknown;
364class TiXmlAttribute;
365class TiXmlText;
366class TiXmlDeclaration;
367class TiXmlParsingData;
368namespace ticpp
369{
370    class Document;
371    class Element;
372    class Declaration;
373    class StylesheetReference;
374    class Text;
375    class Comment;
376    class Attribute;
377}
378namespace orxonox
379{
380    using ticpp::Element;
381}
382
383#endif /* _CorePrereqs_H__ */
Note: See TracBrowser for help on using the repository browser.