# OgrePrerequisites.h

Go to the documentation of this file.

    00001 /*-------------------------------------------------------------------------
    00002 This source file is a part of OGRE
    00003 (Object-oriented Graphics Rendering Engine)
    00004
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright (c) 2000-2005 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This library is free software; you can redistribute it and/or modify it
    00011 under the terms of the GNU Lesser General Public License (LGPL) as
    00012 published by the Free Software Foundation; either version 2.1 of the
    00013 License, or (at your option) any later version.
    00014
    00015 This library is distributed in the hope that it will be useful, but
    00016 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
    00017 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
    00018 License for more details.
    00019
    00020 You should have received a copy of the GNU Lesser General Public License
    00021 along with this library; if not, write to the Free Software Foundation,
    00022 Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA or go to
    00023 http://www.gnu.org/copyleft/lesser.txt
    00024 -------------------------------------------------------------------------*/
    00025 #ifndef __Prerequisites_H__
    00026 #define __Prerequisites_H__
    00027
    00028 // undefine this to not require new angular units where applicable
    00029 #define OGRE_FORCE_ANGLE_TYPES
    00030
    00031 // Platform-specific stuff
    00032 #include "OgrePlatform.h"
    00033
    00034 #if OGRE_COMPILER == OGRE_COMPILER_MSVC
    00035 // Turn off warnings generated by long std templates
    00036 // This warns about truncation to 255 characters in debug/browse info
    00037 #   pragma warning (disable : 4786)
    00038
    00039 // Turn off warnings generated by long std templates
    00040 // This warns about truncation to 255 characters in debug/browse info
    00041 #   pragma warning (disable : 4503)
    00042
    00043 // disable: "conversion from 'double' to 'float', possible loss of data
    00044 #   pragma warning (disable : 4244)
    00045
    00046 // disable: "truncation from 'double' to 'float'
    00047 #   pragma warning (disable : 4305)
    00048
    00049 // disable: "<type> needs to have dll-interface to be used by clients'
    00050 // Happens on STL member variables which are not public therefore is ok
    00051 #   pragma warning (disable : 4251)
    00052
    00053 // disable: "non dll-interface class used as base for dll-interface class"
    00054 // Happens when deriving from Singleton because bug in compiler ignores
    00055 // template export
    00056 #   pragma warning (disable : 4275)
    00057
    00058 // disable: "C++ Exception Specification ignored"
    00059 // This is because MSVC 6 did not implement all the C++ exception
    00060 // specifications in the ANSI C++ draft.
    00061 #   pragma warning( disable : 4290 )
    00062
    00063 // disable: "no suitable definition provided for explicit template
    00064 // instantiation request" Occurs in VC7 for no justifiable reason on all
    00065 // #includes of Singleton
    00066 #   pragma warning( disable: 4661)
    00067
    00068 // disable: deprecation warnings when using CRT calls in VC8
    00069 // These show up on all C runtime lib code in VC8, disable since they clutter
    00070 // the warnings with things we may not be able to do anything about (e.g.
    00071 // generated code from nvparse etc). I doubt very much that these calls
    00072 // will ever be actually removed from VC anyway, it would break too much code.
    00073 #   pragma warning( disable: 4996)
    00074 #endif
    00075
    00076 #if OGRE_COMPILER == OGRE_COMPILER_MSVC
    00077 #   undef _DEFINE_DEPRECATED_HASH_CLASSES
    00078 #   if OGRE_COMP_VER > 1300
    00079 #       define _DEFINE_DEPRECATED_HASH_CLASSES 0
    00080 #   else
    00081 #      define _DEFINE_DEPRECATED_HASH_CLASSES 1
    00082 #   endif
    00083 #endif
    00084
    00085 /* Include all the standard header *after* all the configuration
    00086    settings have been made.
    00087 */
    00088 #include "OgreStdHeaders.h"
    00089
    00090
    00091 #include "OgreMemoryManager.h"
    00092
    00093 // define the real number values to be used
    00094 // default to use 'float' unless precompiler option set
    00095 namespace Ogre {
    00096     // Define ogre version
    00097     #define OGRE_VERSION_MAJOR 1
    00098     #define OGRE_VERSION_MINOR 0
    00099     #define OGRE_VERSION_PATCH 6
    00100     #define OGRE_VERSION_NAME "Azathoth"
    00101
    00102     #if OGRE_DOUBLE_PRECISION == 1
    00103
    00106         typedef double Real;
    00107     #else
    00108
    00111         typedef float Real;
    00112     #endif
    00113
    00114     // define the Char type as either char or wchar_t
    00115     #if OGRE_WCHAR_T_STRINGS == 1
    00116     #   define OgreChar wchar_t
    00117     #   define _TO_CHAR( x ) L##x
    00118     #else
    00119     #   define OgreChar char
    00120     #   define _TO_CHAR( x ) x
    00121     #endif
    00122
    00123     #if OGRE_COMPILER == OGRE_COMPILER_GNUC && OGRE_COMP_VER >= 310
    00124     #   define HashMap ::__gnu_cxx::hash_map
    00125     #else
    00126     #   if OGRE_COMPILER == OGRE_COMPILER_MSVC
    00127     #       if OGRE_COMP_VER > 1300 && !defined(_STLP_MSVC)
    00128     #           define HashMap ::stdext::hash_map
    00129     #       else
    00130     #           define HashMap ::std::hash_map
    00131     #       endif
    00132     #   else
    00133     #       define HashMap ::std::hash_map
    00134     #   endif
    00135     #endif
    00136
    00139     typedef unsigned char uchar;
    00140     typedef unsigned short ushort;
    00141     typedef unsigned int uint;
    00142     typedef unsigned long ulong;
    00143
    00145     #define OGRE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
    00146     #define OGRE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
    00147
    00148     #if OGRE_WCHAR_T_STRINGS
    00149         typedef std::wstring _StringBase;
    00150     #else
    00151         typedef std::string _StringBase;
    00152     #endif
    00153
    00154     typedef _StringBase String;
    00155
    00156     // Useful threading defines
    00157     #define OGRE_AUTO_MUTEX_NAME mutex
    00158     #if OGRE_THREAD_SUPPORT
    00159         #define OGRE_AUTO_MUTEX mutable boost::recursive_mutex OGRE_AUTO_MUTEX_NAME;
    00160         #define OGRE_LOCK_AUTO_MUTEX boost::recursive_mutex::scoped_lock ogreAutoMutexLock(OGRE_AUTO_MUTEX_NAME);
    00161         #define OGRE_MUTEX(name) mutable boost::recursive_mutex name;
    00162         #define OGRE_LOCK_MUTEX(name) boost::recursive_mutex::scoped_lock ogrenameLock(name);
    00163         // like OGRE_AUTO_MUTEX but mutex held by pointer
    00164         #define OGRE_AUTO_SHARED_MUTEX mutable boost::recursive_mutex *OGRE_AUTO_MUTEX_NAME;
    00165         #define OGRE_LOCK_AUTO_SHARED_MUTEX boost::recursive_mutex::scoped_lock ogreAutoMutexLock(*OGRE_AUTO_MUTEX_NAME);
    00166         #define OGRE_NEW_AUTO_SHARED_MUTEX OGRE_AUTO_MUTEX_NAME = new boost::recursive_mutex();
    00167         #define OGRE_DELETE_AUTO_SHARED_MUTEX delete OGRE_AUTO_MUTEX_NAME;
    00168         #define OGRE_COPY_AUTO_SHARED_MUTEX(from) OGRE_AUTO_MUTEX_NAME = from;
    00169     #else
    00170         #define OGRE_AUTO_MUTEX
    00171         #define OGRE_LOCK_AUTO_MUTEX
    00172         #define OGRE_MUTEX(name)
    00173         #define OGRE_LOCK_MUTEX(name)
    00174         #define OGRE_AUTO_SHARED_MUTEX
    00175         #define OGRE_LOCK_AUTO_SHARED_MUTEX
    00176         #define OGRE_NEW_AUTO_SHARED_MUTEX
    00177         #define OGRE_DELETE_AUTO_SHARED_MUTEX
    00178         #define OGRE_COPY_AUTO_SHARED_MUTEX(from)
    00179     #endif
    00180
    00181
    00182 // Pre-declare classes
    00183 // Allows use of pointers in header files without including individual .h
    00184 // so decreases dependencies between files
    00185     class Angle;
    00186     class Animation;
    00187     class AnimationState;
    00188     class AnimationTrack;
    00189     class Archive;
    00190     class ArchiveFactory;
    00191     class ArchiveManager;
    00192     class AutoParamDataSource;
    00193     class AxisAlignedBox;
    00194     class AxisAlignedBoxSceneQuery;
    00195     class Billboard;
    00196     class BillboardSet;
    00197     class Bone;
    00198     class Camera;
    00199     class Codec;
    00200     class ColourValue;
    00201     class ConfigDialog;
    00202     template <typename T> class Controller;
    00203     template <typename T> class ControllerFunction;
    00204     class ControllerManager;
    00205     template <typename T> class ControllerValue;
    00206     class Cursor;
    00207     class Degree;
    00208     class DynLib;
    00209     class DynLibManager;
    00210     class EdgeData;
    00211     class EdgeListBuilder;
    00212     class Entity;
    00213     class ErrorDialog;
    00214     class EventDispatcher;
    00215     class EventProcessor;
    00216     class EventQueue;
    00217     class EventTarget;
    00218     class ExternalTextureSourceManager;
    00219     class Factory;
    00220     class Font;
    00221     class FontPtr;
    00222     class FontManager;
    00223     struct FrameEvent;
    00224     class FrameListener;
    00225     class Frustum;
    00226     class GpuProgram;
    00227     class GpuProgramPtr;
    00228     class GpuProgramManager;
    00229     class GpuProgramUsage;
    00230     class HardwareIndexBuffer;
    00231     class HardwareOcclusionQuery;
    00232     class HardwareVertexBuffer;
    00233     class HardwarePixelBuffer;
    00234     class HardwarePixelBufferSharedPtr;
    00235     class HighLevelGpuProgram;
    00236     class HighLevelGpuProgramPtr;
    00237     class HighLevelGpuProgramManager;
    00238     class HighLevelGpuProgramFactory;
    00239     class IndexData;
    00240     class InputEvent;
    00241     class InputReader;
    00242     class IntersectionSceneQuery;
    00243     class IntersectionSceneQueryListener;
    00244     class Image;
    00245     class KeyEvent;
    00246     class KeyFrame;
    00247     class KeyListener;
    00248     class KeyTarget;
    00249     class Light;
    00250     class Log;
    00251     class LogManager;
    00252     class ManualResourceLoader;
    00253     class Material;
    00254     class MaterialPtr;
    00255     class MaterialManager;
    00256     class Math;
    00257     class Matrix3;
    00258     class Matrix4;
    00259     class MemoryManager;
    00260     class Mesh;
    00261     class MeshPtr;
    00262     class MeshSerializer;
    00263     class MeshSerializerImpl;
    00264     class MeshManager;
    00265     class MovableObject;
    00266     class MovablePlane;
    00267     class MouseEvent;
    00268     class MouseListener;
    00269     class MouseMotionListener;
    00270     class MouseTarget;
    00271     class Node;
    00272     class Overlay;
    00273     class OverlayContainer;
    00274     class OverlayElement;
    00275     class OverlayElementFactory;
    00276     class OverlayManager;
    00277     class Particle;
    00278     class ParticleAffector;
    00279     class ParticleAffectorFactory;
    00280     class ParticleEmitter;
    00281     class ParticleEmitterFactory;
    00282     class ParticleSystem;
    00283     class ParticleSystemManager;
    00284     class ParticleSystemRenderer;
    00285     class ParticleSystemRendererFactory;
    00286     class ParticleVisualData;
    00287     class Pass;
    00288     class PatchMesh;
    00289     class PixelBox;
    00290     class PlatformManager;
    00291     class Plane;
    00292     class PlaneBoundedVolume;
    00293     class PositionTarget;
    00294     class ProgressiveMesh;
    00295     class Profile;
    00296     class Profiler;
    00297     class Quaternion;
    00298     class Radian;
    00299     class Ray;
    00300     class RaySceneQuery;
    00301     class RaySceneQueryListener;
    00302     class Renderable;
    00303     class RenderPriorityGroup;
    00304     class RenderQueue;
    00305     class RenderQueueGroup;
    00306     class RenderQueueListener;
    00307     class RenderSystem;
    00308     class RenderSystemCapabilities;
    00309     class RenderTarget;
    00310     class RenderTargetListener;
    00311     class RenderTexture;
    00312     class RenderWindow;
    00313     class RenderOperation;
    00314     class Resource;
    00315     class ResourceBackgroundQueue;
    00316     class ResourceGroupManager;
    00317     class ResourceManager;
    00318     class Root;
    00319     class SceneManager;
    00320     class SceneManagerEnumerator;
    00321     class SceneNode;
    00322     class SceneQuery;
    00323     class SceneQueryListener;
    00324     class ScriptLoader;
    00325     class Serializer;
    00326     class ShadowCaster;
    00327     class ShadowRenderable;
    00328     class SimpleRenderable;
    00329     class SimpleSpline;
    00330     class Skeleton;
    00331     class SkeletonPtr;
    00332     class SkeletonInstance;
    00333     class SkeletonManager;
    00334     class Sphere;
    00335     class SphereSceneQuery;
    00336     class StaticGeometry;
    00337     class StringConverter;
    00338     class StringInterface;
    00339     class SubEntity;
    00340     class SubMesh;
    00341     class TagPoint;
    00342     class TargetManager;
    00343     class Technique;
    00344     class ExternalTextureSource;
    00345     class TextureUnitState;
    00346     class Texture;
    00347     class TexturePtr;
    00348     class TextureFont;
    00349     class TextureManager;
    00350     class Timer;
    00351     class UserDefinedObject;
    00352     class Vector2;
    00353     class Vector3;
    00354     class Vector4;
    00355     class Viewport;
    00356     class VertexBufferBinding;
    00357     class VertexData;
    00358     class VertexDeclaration;
    00359     class WireBoundingBox;
    00360 }
    00361
    00362 #endif // __OgrePrerequisites_H__
    00363
    00364

Copyright © 2000-2005 by The OGRE Team
Last modified Sun Nov 20 12:36:04 2005