Commit 8b400b1e by apatrick@chromium.org

Do not use dynamic_cast if RTTI is disabled.

parent a820c309
...@@ -99,6 +99,13 @@ namespace gl ...@@ -99,6 +99,13 @@ namespace gl
#define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__) #define UNREACHABLE() ERR("\t! Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__)
#endif #endif
// A macro that determines whether an object has a given runtime type.
#if !defined(NDEBUG) && (!defined(_MSC_VER) || defined(_CPPRTTI))
#define HAS_DYNAMIC_TYPE(type, obj) (dynamic_cast<type >(obj) != NULL)
#else
#define HAS_DYNAMIC_TYPE(type, obj) true
#endif
// A macro functioning as a compile-time assert to validate constant conditions // A macro functioning as a compile-time assert to validate constant conditions
#define META_ASSERT(condition) typedef int COMPILE_TIME_ASSERT_##__LINE__[static_cast<bool>(condition)?1:-1] #define META_ASSERT(condition) typedef int COMPILE_TIME_ASSERT_##__LINE__[static_cast<bool>(condition)?1:-1]
......
#define MAJOR_VERSION 1 #define MAJOR_VERSION 1
#define MINOR_VERSION 1 #define MINOR_VERSION 1
#define BUILD_VERSION 0 #define BUILD_VERSION 0
#define BUILD_REVISION 1801 #define BUILD_REVISION 1808
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x) #define MACRO_STRINGIFY(x) STRINGIFY(x)
......
...@@ -37,7 +37,7 @@ Image11::~Image11() ...@@ -37,7 +37,7 @@ Image11::~Image11()
Image11 *Image11::makeImage11(Image *img) Image11 *Image11::makeImage11(Image *img)
{ {
ASSERT(dynamic_cast<rx::Image11*>(img) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::Image11*, img));
return static_cast<rx::Image11*>(img); return static_cast<rx::Image11*>(img);
} }
......
...@@ -98,7 +98,7 @@ void Image9::generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 *sour ...@@ -98,7 +98,7 @@ void Image9::generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 *sour
Image9 *Image9::makeImage9(Image *img) Image9 *Image9::makeImage9(Image *img)
{ {
ASSERT(dynamic_cast<rx::Image9*>(img) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::Image9*, img));
return static_cast<rx::Image9*>(img); return static_cast<rx::Image9*>(img);
} }
......
...@@ -65,7 +65,7 @@ bool IndexBuffer11::initialize(unsigned int bufferSize, GLenum indexType, bool d ...@@ -65,7 +65,7 @@ bool IndexBuffer11::initialize(unsigned int bufferSize, GLenum indexType, bool d
IndexBuffer11 *IndexBuffer11::makeIndexBuffer11(IndexBuffer *indexBuffer) IndexBuffer11 *IndexBuffer11::makeIndexBuffer11(IndexBuffer *indexBuffer)
{ {
ASSERT(dynamic_cast<IndexBuffer11*>(indexBuffer) != NULL); ASSERT(HAS_DYNAMIC_TYPE(IndexBuffer11*, indexBuffer));
return static_cast<IndexBuffer11*>(indexBuffer); return static_cast<IndexBuffer11*>(indexBuffer);
} }
......
...@@ -86,7 +86,7 @@ bool IndexBuffer9::initialize(unsigned int bufferSize, GLenum indexType, bool dy ...@@ -86,7 +86,7 @@ bool IndexBuffer9::initialize(unsigned int bufferSize, GLenum indexType, bool dy
IndexBuffer9 *IndexBuffer9::makeIndexBuffer9(IndexBuffer *indexBuffer) IndexBuffer9 *IndexBuffer9::makeIndexBuffer9(IndexBuffer *indexBuffer)
{ {
ASSERT(dynamic_cast<IndexBuffer9*>(indexBuffer) != NULL); ASSERT(HAS_DYNAMIC_TYPE(IndexBuffer9*, indexBuffer));
return static_cast<IndexBuffer9*>(indexBuffer); return static_cast<IndexBuffer9*>(indexBuffer);
} }
......
...@@ -349,7 +349,7 @@ RenderTarget11::~RenderTarget11() ...@@ -349,7 +349,7 @@ RenderTarget11::~RenderTarget11()
RenderTarget11 *RenderTarget11::makeRenderTarget11(RenderTarget *target) RenderTarget11 *RenderTarget11::makeRenderTarget11(RenderTarget *target)
{ {
ASSERT(dynamic_cast<rx::RenderTarget11*>(target) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::RenderTarget11*, target));
return static_cast<rx::RenderTarget11*>(target); return static_cast<rx::RenderTarget11*>(target);
} }
......
...@@ -94,7 +94,7 @@ RenderTarget9::~RenderTarget9() ...@@ -94,7 +94,7 @@ RenderTarget9::~RenderTarget9()
RenderTarget9 *RenderTarget9::makeRenderTarget9(RenderTarget *target) RenderTarget9 *RenderTarget9::makeRenderTarget9(RenderTarget *target)
{ {
ASSERT(dynamic_cast<rx::RenderTarget9*>(target) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::RenderTarget9*, target));
return static_cast<rx::RenderTarget9*>(target); return static_cast<rx::RenderTarget9*>(target);
} }
......
...@@ -142,7 +142,7 @@ Renderer11::~Renderer11() ...@@ -142,7 +142,7 @@ Renderer11::~Renderer11()
Renderer11 *Renderer11::makeRenderer11(Renderer *renderer) Renderer11 *Renderer11::makeRenderer11(Renderer *renderer)
{ {
ASSERT(dynamic_cast<rx::Renderer11*>(renderer) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::Renderer11*, renderer));
return static_cast<rx::Renderer11*>(renderer); return static_cast<rx::Renderer11*>(renderer);
} }
......
...@@ -164,7 +164,7 @@ Renderer9::~Renderer9() ...@@ -164,7 +164,7 @@ Renderer9::~Renderer9()
Renderer9 *Renderer9::makeRenderer9(Renderer *renderer) Renderer9 *Renderer9::makeRenderer9(Renderer *renderer)
{ {
ASSERT(dynamic_cast<rx::Renderer9*>(renderer) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::Renderer9*, renderer));
return static_cast<rx::Renderer9*>(renderer); return static_cast<rx::Renderer9*>(renderer);
} }
......
...@@ -67,7 +67,7 @@ ShaderExecutable11::~ShaderExecutable11() ...@@ -67,7 +67,7 @@ ShaderExecutable11::~ShaderExecutable11()
ShaderExecutable11 *ShaderExecutable11::makeShaderExecutable11(ShaderExecutable *executable) ShaderExecutable11 *ShaderExecutable11::makeShaderExecutable11(ShaderExecutable *executable)
{ {
ASSERT(dynamic_cast<ShaderExecutable11*>(executable) != NULL); ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable11*, executable));
return static_cast<ShaderExecutable11*>(executable); return static_cast<ShaderExecutable11*>(executable);
} }
......
...@@ -42,7 +42,7 @@ ShaderExecutable9::~ShaderExecutable9() ...@@ -42,7 +42,7 @@ ShaderExecutable9::~ShaderExecutable9()
ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable) ShaderExecutable9 *ShaderExecutable9::makeShaderExecutable9(ShaderExecutable *executable)
{ {
ASSERT(dynamic_cast<ShaderExecutable9*>(executable) != NULL); ASSERT(HAS_DYNAMIC_TYPE(ShaderExecutable9*, executable));
return static_cast<ShaderExecutable9*>(executable); return static_cast<ShaderExecutable9*>(executable);
} }
......
...@@ -592,7 +592,7 @@ ID3D11DepthStencilView *SwapChain11::getDepthStencil() ...@@ -592,7 +592,7 @@ ID3D11DepthStencilView *SwapChain11::getDepthStencil()
SwapChain11 *SwapChain11::makeSwapChain11(SwapChain *swapChain) SwapChain11 *SwapChain11::makeSwapChain11(SwapChain *swapChain)
{ {
ASSERT(dynamic_cast<rx::SwapChain11*>(swapChain) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::SwapChain11*, swapChain));
return static_cast<rx::SwapChain11*>(swapChain); return static_cast<rx::SwapChain11*>(swapChain);
} }
......
...@@ -392,7 +392,7 @@ IDirect3DTexture9 *SwapChain9::getOffscreenTexture() ...@@ -392,7 +392,7 @@ IDirect3DTexture9 *SwapChain9::getOffscreenTexture()
SwapChain9 *SwapChain9::makeSwapChain9(SwapChain *swapChain) SwapChain9 *SwapChain9::makeSwapChain9(SwapChain *swapChain)
{ {
ASSERT(dynamic_cast<rx::SwapChain9*>(swapChain) != NULL); ASSERT(HAS_DYNAMIC_TYPE(rx::SwapChain9*, swapChain));
return static_cast<rx::SwapChain9*>(swapChain); return static_cast<rx::SwapChain9*>(swapChain);
} }
......
...@@ -33,7 +33,7 @@ TextureStorage11::~TextureStorage11() ...@@ -33,7 +33,7 @@ TextureStorage11::~TextureStorage11()
TextureStorage11 *TextureStorage11::makeTextureStorage11(TextureStorage *storage) TextureStorage11 *TextureStorage11::makeTextureStorage11(TextureStorage *storage)
{ {
ASSERT(dynamic_cast<TextureStorage11*>(storage) != NULL); ASSERT(HAS_DYNAMIC_TYPE(TextureStorage11*, storage));
return static_cast<TextureStorage11*>(storage); return static_cast<TextureStorage11*>(storage);
} }
...@@ -275,7 +275,7 @@ TextureStorage11_2D::~TextureStorage11_2D() ...@@ -275,7 +275,7 @@ TextureStorage11_2D::~TextureStorage11_2D()
TextureStorage11_2D *TextureStorage11_2D::makeTextureStorage11_2D(TextureStorage *storage) TextureStorage11_2D *TextureStorage11_2D::makeTextureStorage11_2D(TextureStorage *storage)
{ {
ASSERT(dynamic_cast<TextureStorage11_2D*>(storage) != NULL); ASSERT(HAS_DYNAMIC_TYPE(TextureStorage11_2D*, storage));
return static_cast<TextureStorage11_2D*>(storage); return static_cast<TextureStorage11_2D*>(storage);
} }
...@@ -453,7 +453,7 @@ TextureStorage11_Cube::~TextureStorage11_Cube() ...@@ -453,7 +453,7 @@ TextureStorage11_Cube::~TextureStorage11_Cube()
TextureStorage11_Cube *TextureStorage11_Cube::makeTextureStorage11_Cube(TextureStorage *storage) TextureStorage11_Cube *TextureStorage11_Cube::makeTextureStorage11_Cube(TextureStorage *storage)
{ {
ASSERT(dynamic_cast<TextureStorage11_Cube*>(storage) != NULL); ASSERT(HAS_DYNAMIC_TYPE(TextureStorage11_Cube*, storage));
return static_cast<TextureStorage11_Cube*>(storage); return static_cast<TextureStorage11_Cube*>(storage);
} }
......
...@@ -33,7 +33,7 @@ TextureStorage9::~TextureStorage9() ...@@ -33,7 +33,7 @@ TextureStorage9::~TextureStorage9()
TextureStorage9 *TextureStorage9::makeTextureStorage9(TextureStorage *storage) TextureStorage9 *TextureStorage9::makeTextureStorage9(TextureStorage *storage)
{ {
ASSERT(dynamic_cast<TextureStorage9*>(storage) != NULL); ASSERT(HAS_DYNAMIC_TYPE(TextureStorage9*, storage));
return static_cast<TextureStorage9*>(storage); return static_cast<TextureStorage9*>(storage);
} }
...@@ -153,7 +153,7 @@ TextureStorage9_2D::~TextureStorage9_2D() ...@@ -153,7 +153,7 @@ TextureStorage9_2D::~TextureStorage9_2D()
TextureStorage9_2D *TextureStorage9_2D::makeTextureStorage9_2D(TextureStorage *storage) TextureStorage9_2D *TextureStorage9_2D::makeTextureStorage9_2D(TextureStorage *storage)
{ {
ASSERT(dynamic_cast<TextureStorage9_2D*>(storage) != NULL); ASSERT(HAS_DYNAMIC_TYPE(TextureStorage9_2D*, storage));
return static_cast<TextureStorage9_2D*>(storage); return static_cast<TextureStorage9_2D*>(storage);
} }
...@@ -258,7 +258,7 @@ TextureStorage9_Cube::~TextureStorage9_Cube() ...@@ -258,7 +258,7 @@ TextureStorage9_Cube::~TextureStorage9_Cube()
TextureStorage9_Cube *TextureStorage9_Cube::makeTextureStorage9_Cube(TextureStorage *storage) TextureStorage9_Cube *TextureStorage9_Cube::makeTextureStorage9_Cube(TextureStorage *storage)
{ {
ASSERT(dynamic_cast<TextureStorage9_Cube*>(storage) != NULL); ASSERT(HAS_DYNAMIC_TYPE(TextureStorage9_Cube*, storage));
return static_cast<TextureStorage9_Cube*>(storage); return static_cast<TextureStorage9_Cube*>(storage);
} }
......
...@@ -65,7 +65,7 @@ bool VertexBuffer11::initialize(unsigned int size, bool dynamicUsage) ...@@ -65,7 +65,7 @@ bool VertexBuffer11::initialize(unsigned int size, bool dynamicUsage)
VertexBuffer11 *VertexBuffer11::makeVertexBuffer11(VertexBuffer *vetexBuffer) VertexBuffer11 *VertexBuffer11::makeVertexBuffer11(VertexBuffer *vetexBuffer)
{ {
ASSERT(dynamic_cast<VertexBuffer11*>(vetexBuffer) != NULL); ASSERT(HAS_DYNAMIC_TYPE(VertexBuffer11*, vetexBuffer));
return static_cast<VertexBuffer11*>(vetexBuffer); return static_cast<VertexBuffer11*>(vetexBuffer);
} }
......
...@@ -75,7 +75,7 @@ bool VertexBuffer9::initialize(unsigned int size, bool dynamicUsage) ...@@ -75,7 +75,7 @@ bool VertexBuffer9::initialize(unsigned int size, bool dynamicUsage)
VertexBuffer9 *VertexBuffer9::makeVertexBuffer9(VertexBuffer *vertexBuffer) VertexBuffer9 *VertexBuffer9::makeVertexBuffer9(VertexBuffer *vertexBuffer)
{ {
ASSERT(dynamic_cast<VertexBuffer9*>(vertexBuffer) != NULL); ASSERT(HAS_DYNAMIC_TYPE(VertexBuffer9*, vertexBuffer));
return static_cast<VertexBuffer9*>(vertexBuffer); return static_cast<VertexBuffer9*>(vertexBuffer);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment