Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/lastmanstanding3/src/libraries/core/CorePrereqs.h @ 8328

Last change on this file since 8328 was 7849, checked in by landauf, 14 years ago

Added DestructionListener, a class which gets notified if a certain object (of type OrxonoxClass) is destroyed. So far only WeakPtr was able to do this, now every class that inherits from DestructionListener can do so.

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