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-2006 Torus Knot Software Ltd 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 __OgrePrerequisites_H__ 00026 #define __OgrePrerequisites_H__ 00027 00028 // Platform-specific stuff 00029 #include "OgrePlatform.h" 00030 00031 // Needed for OGRE_WCHAR_T_STRINGS below 00032 #include <string> 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 00075 // disable: "conditional expression constant", always occurs on 00076 // OGRE_MUTEX_CONDITIONAL when no threading enabled 00077 # pragma warning (disable : 201) 00078 00079 #endif 00080 00081 // configure memory tracking 00082 #if OGRE_DEBUG_MODE 00083 # if OGRE_MEMORY_TRACKER_DEBUG_MODE 00084 # define OGRE_MEMORY_TRACKER 1 00085 # else 00086 # define OGRE_MEMORY_TRACKER 0 00087 # endif 00088 #else 00089 # if OGRE_MEMORY_TRACKER_RELEASE_MODE 00090 # define OGRE_MEMORY_TRACKER 1 00091 # else 00092 # define OGRE_MEMORY_TRACKER 0 00093 # endif 00094 #endif 00095 00096 00097 00098 00099 namespace Ogre { 00100 // Define ogre version 00101 #define OGRE_VERSION_MAJOR 1 00102 #define OGRE_VERSION_MINOR 6 00103 #define OGRE_VERSION_PATCH 4 00104 #define OGRE_VERSION_SUFFIX "" 00105 #define OGRE_VERSION_NAME "Shoggoth" 00106 00107 #define OGRE_VERSION ((OGRE_VERSION_MAJOR << 16) | (OGRE_VERSION_MINOR << 8) | OGRE_VERSION_PATCH) 00108 00109 // define the real number values to be used 00110 // default to use 'float' unless precompiler option set 00111 #if OGRE_DOUBLE_PRECISION == 1 00112 00115 typedef double Real; 00116 #else 00117 00120 typedef float Real; 00121 #endif 00122 00123 #if OGRE_COMPILER == OGRE_COMPILER_GNUC && OGRE_COMP_VER >= 310 && !defined(STLPORT) 00124 # if OGRE_COMP_VER >= 430 00125 # define HashMap ::std::tr1::unordered_map 00126 # define HashSet ::std::tr1::unordered_set 00127 # else 00128 # define HashMap ::__gnu_cxx::hash_map 00129 # define HashSet ::__gnu_cxx::hash_set 00130 # endif 00131 #else 00132 # if OGRE_COMPILER == OGRE_COMPILER_MSVC 00133 # if OGRE_COMP_VER >= 1600 // VC++ 10.0 00134 # define HashMap ::std::tr1::unordered_map 00135 # define HashSet ::std::tr1::unordered_set 00136 # elif OGRE_COMP_VER > 1300 && !defined(_STLP_MSVC) 00137 # define HashMap ::stdext::hash_map 00138 # define HashSet ::stdext::hash_set 00139 # else 00140 # define HashMap ::std::hash_map 00141 # define HashSet ::std::hash_set 00142 # endif 00143 # else 00144 # define HashMap ::std::hash_map 00145 # define HashSet ::std::hash_set 00146 # endif 00147 #endif 00148 00151 typedef unsigned char uchar; 00152 typedef unsigned short ushort; 00153 typedef unsigned int uint; 00154 typedef unsigned long ulong; 00155 00156 #if OGRE_WCHAR_T_STRINGS 00157 typedef std::wstring _StringBase; 00158 #else 00159 typedef std::string _StringBase; 00160 #endif 00161 00162 typedef _StringBase String; 00163 00164 // Useful threading defines 00165 #define OGRE_AUTO_MUTEX_NAME mutex 00166 #if OGRE_THREAD_SUPPORT 00167 #define OGRE_AUTO_MUTEX mutable boost::recursive_mutex OGRE_AUTO_MUTEX_NAME; 00168 #define OGRE_LOCK_AUTO_MUTEX boost::recursive_mutex::scoped_lock ogreAutoMutexLock(OGRE_AUTO_MUTEX_NAME); 00169 #define OGRE_MUTEX(name) mutable boost::recursive_mutex name; 00170 #define OGRE_STATIC_MUTEX(name) static boost::recursive_mutex name; 00171 #define OGRE_STATIC_MUTEX_INSTANCE(name) boost::recursive_mutex name; 00172 #define OGRE_LOCK_MUTEX(name) boost::recursive_mutex::scoped_lock ogrenameLock(name); 00173 #define OGRE_LOCK_MUTEX_NAMED(mutexName, lockName) boost::recursive_mutex::scoped_lock lockName(mutexName); 00174 // like OGRE_AUTO_MUTEX but mutex held by pointer 00175 #define OGRE_AUTO_SHARED_MUTEX mutable boost::recursive_mutex *OGRE_AUTO_MUTEX_NAME; 00176 #define OGRE_LOCK_AUTO_SHARED_MUTEX assert(OGRE_AUTO_MUTEX_NAME); boost::recursive_mutex::scoped_lock ogreAutoMutexLock(*OGRE_AUTO_MUTEX_NAME); 00177 #define OGRE_NEW_AUTO_SHARED_MUTEX assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = new boost::recursive_mutex(); 00178 #define OGRE_DELETE_AUTO_SHARED_MUTEX assert(OGRE_AUTO_MUTEX_NAME); delete OGRE_AUTO_MUTEX_NAME; 00179 #define OGRE_COPY_AUTO_SHARED_MUTEX(from) assert(!OGRE_AUTO_MUTEX_NAME); OGRE_AUTO_MUTEX_NAME = from; 00180 #define OGRE_SET_AUTO_SHARED_MUTEX_NULL OGRE_AUTO_MUTEX_NAME = 0; 00181 #define OGRE_MUTEX_CONDITIONAL(mutex) if (mutex) 00182 #define OGRE_THREAD_SYNCHRONISER(sync) boost::condition sync; 00183 #define OGRE_THREAD_WAIT(sync, lock) sync.wait(lock); 00184 #define OGRE_THREAD_NOTIFY_ONE(sync) sync.notify_one(); 00185 #define OGRE_THREAD_NOTIFY_ALL(sync) sync.notify_all(); 00186 // Thread-local pointer 00187 #define OGRE_THREAD_POINTER(T, var) boost::thread_specific_ptr<T> var 00188 #define OGRE_THREAD_POINTER_SET(var, expr) var.reset(expr) 00189 #define OGRE_THREAD_POINTER_DELETE(var) var.reset(0) 00190 #define OGRE_THREAD_POINTER_GET(var) var.get() 00191 #else 00192 #define OGRE_AUTO_MUTEX 00193 #define OGRE_LOCK_AUTO_MUTEX 00194 #define OGRE_MUTEX(name) 00195 #define OGRE_STATIC_MUTEX(name) 00196 #define OGRE_STATIC_MUTEX_INSTANCE(name) 00197 #define OGRE_LOCK_MUTEX(name) 00198 #define OGRE_LOCK_MUTEX_NAMED(mutexName, lockName) 00199 #define OGRE_AUTO_SHARED_MUTEX 00200 #define OGRE_LOCK_AUTO_SHARED_MUTEX 00201 #define OGRE_NEW_AUTO_SHARED_MUTEX 00202 #define OGRE_DELETE_AUTO_SHARED_MUTEX 00203 #define OGRE_COPY_AUTO_SHARED_MUTEX(from) 00204 #define OGRE_SET_AUTO_SHARED_MUTEX_NULL 00205 #define OGRE_MUTEX_CONDITIONAL(name) if(true) 00206 #define OGRE_THREAD_SYNCHRONISER(sync) 00207 #define OGRE_THREAD_WAIT(sync, lock) 00208 #define OGRE_THREAD_NOTIFY_ONE(sync) 00209 #define OGRE_THREAD_NOTIFY_ALL(sync) 00210 #define OGRE_THREAD_POINTER(T, var) T* var 00211 #define OGRE_THREAD_POINTER_SET(var, expr) var = expr 00212 #define OGRE_THREAD_POINTER_DELETE(var) OGRE_DELETE var; var = 0 00213 #define OGRE_THREAD_POINTER_GET(var) var 00214 #endif 00215 00216 00217 // Pre-declare classes 00218 // Allows use of pointers in header files without including individual .h 00219 // so decreases dependencies between files 00220 class Angle; 00221 class Animation; 00222 class AnimationState; 00223 class AnimationStateSet; 00224 class AnimationTrack; 00225 class Archive; 00226 class ArchiveFactory; 00227 class ArchiveManager; 00228 class AutoParamDataSource; 00229 class AxisAlignedBox; 00230 class AxisAlignedBoxSceneQuery; 00231 class Billboard; 00232 class BillboardChain; 00233 class BillboardSet; 00234 class Bone; 00235 class Camera; 00236 class Codec; 00237 class ColourValue; 00238 class ConfigDialog; 00239 template <typename T> class Controller; 00240 template <typename T> class ControllerFunction; 00241 class ControllerManager; 00242 template <typename T> class ControllerValue; 00243 class Degree; 00244 class DynLib; 00245 class DynLibManager; 00246 class EdgeData; 00247 class EdgeListBuilder; 00248 class Entity; 00249 class ErrorDialog; 00250 class ExternalTextureSourceManager; 00251 class Factory; 00252 class Font; 00253 class FontPtr; 00254 class FontManager; 00255 struct FrameEvent; 00256 class FrameListener; 00257 class Frustum; 00258 class GpuProgram; 00259 class GpuProgramPtr; 00260 class GpuProgramManager; 00261 class GpuProgramUsage; 00262 class HardwareIndexBuffer; 00263 class HardwareOcclusionQuery; 00264 class HardwareVertexBuffer; 00265 class HardwarePixelBuffer; 00266 class HardwarePixelBufferSharedPtr; 00267 class HighLevelGpuProgram; 00268 class HighLevelGpuProgramPtr; 00269 class HighLevelGpuProgramManager; 00270 class HighLevelGpuProgramFactory; 00271 class IndexData; 00272 class IntersectionSceneQuery; 00273 class IntersectionSceneQueryListener; 00274 class Image; 00275 class KeyFrame; 00276 class Light; 00277 class Log; 00278 class LogManager; 00279 class ManualResourceLoader; 00280 class ManualObject; 00281 class Material; 00282 class MaterialPtr; 00283 class MaterialManager; 00284 class Math; 00285 class Matrix3; 00286 class Matrix4; 00287 class MemoryManager; 00288 class Mesh; 00289 class MeshPtr; 00290 class MeshSerializer; 00291 class MeshSerializerImpl; 00292 class MeshManager; 00293 class MovableObject; 00294 class MovablePlane; 00295 class Node; 00296 class NodeAnimationTrack; 00297 class NodeKeyFrame; 00298 class NumericAnimationTrack; 00299 class NumericKeyFrame; 00300 class Overlay; 00301 class OverlayContainer; 00302 class OverlayElement; 00303 class OverlayElementFactory; 00304 class OverlayManager; 00305 class Particle; 00306 class ParticleAffector; 00307 class ParticleAffectorFactory; 00308 class ParticleEmitter; 00309 class ParticleEmitterFactory; 00310 class ParticleSystem; 00311 class ParticleSystemManager; 00312 class ParticleSystemRenderer; 00313 class ParticleSystemRendererFactory; 00314 class ParticleVisualData; 00315 class Pass; 00316 class PatchMesh; 00317 class PixelBox; 00318 class Plane; 00319 class PlaneBoundedVolume; 00320 class Plugin; 00321 class Pose; 00322 class ProgressiveMesh; 00323 class Profile; 00324 class Profiler; 00325 class Quaternion; 00326 class Radian; 00327 class Ray; 00328 class RaySceneQuery; 00329 class RaySceneQueryListener; 00330 class Renderable; 00331 class RenderPriorityGroup; 00332 class RenderQueue; 00333 class RenderQueueGroup; 00334 class RenderQueueInvocation; 00335 class RenderQueueInvocationSequence; 00336 class RenderQueueListener; 00337 class RenderSystem; 00338 class RenderSystemCapabilities; 00339 class RenderSystemCapabilitiesManager; 00340 class RenderSystemCapabilitiesSerializer; 00341 class RenderTarget; 00342 class RenderTargetListener; 00343 class RenderTexture; 00344 class MultiRenderTarget; 00345 class RenderWindow; 00346 class RenderOperation; 00347 class Resource; 00348 class ResourceBackgroundQueue; 00349 class ResourceGroupManager; 00350 class ResourceManager; 00351 class RibbonTrail; 00352 class Root; 00353 class SceneManager; 00354 class SceneManagerEnumerator; 00355 class SceneNode; 00356 class SceneQuery; 00357 class SceneQueryListener; 00358 class ScriptCompiler; 00359 class ScriptCompilerManager; 00360 class ScriptLoader; 00361 class Serializer; 00362 class ShadowCaster; 00363 class ShadowRenderable; 00364 class ShadowTextureManager; 00365 class SimpleRenderable; 00366 class SimpleSpline; 00367 class Skeleton; 00368 class SkeletonPtr; 00369 class SkeletonInstance; 00370 class SkeletonManager; 00371 class Sphere; 00372 class SphereSceneQuery; 00373 class StaticGeometry; 00374 class StringConverter; 00375 class StringInterface; 00376 class SubEntity; 00377 class SubMesh; 00378 class TagPoint; 00379 class Technique; 00380 class TempBlendedBufferInfo; 00381 class ExternalTextureSource; 00382 class TextureUnitState; 00383 class Texture; 00384 class TexturePtr; 00385 class TextureManager; 00386 class TransformKeyFrame; 00387 class Timer; 00388 class UserDefinedObject; 00389 class Vector2; 00390 class Vector3; 00391 class Vector4; 00392 class Viewport; 00393 class VertexAnimationTrack; 00394 class VertexBufferBinding; 00395 class VertexData; 00396 class VertexDeclaration; 00397 class VertexMorphKeyFrame; 00398 class WireBoundingBox; 00399 class Compositor; 00400 class CompositorManager; 00401 class CompositorChain; 00402 class CompositorInstance; 00403 class CompositionTechnique; 00404 class CompositionPass; 00405 class CompositionTargetPass; 00406 } 00407 00408 /* Include all the standard header *after* all the configuration 00409 settings have been made. 00410 */ 00411 #include "OgreStdHeaders.h" 00412 #include "OgreMemoryAllocatorConfig.h" 00413 00414 00415 #endif // __OgrePrerequisites_H__ 00416 00417
Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 27 22:02:25 2009