Added static assertions to secure code

Former-commit-id: 207f1135b3b40cee74fbf8ba98e6fb7379ba8c33
This commit is contained in:
Lynix 2013-08-03 20:58:50 +02:00
parent 19e02a900b
commit 1ebaf4749c
3 changed files with 48 additions and 0 deletions

View File

@ -24,6 +24,8 @@ namespace
"Error: ", // nzErrorType_Normal
"Warning: " // nzErrorType_Warning
};
static_assert(sizeof(errorType)/sizeof(const char*) == nzErrorType_Max+1, "Error type array is incomplete");
}
NzLog::NzLog() :

View File

@ -1229,6 +1229,8 @@ GLenum NzOpenGL::Attachment[nzAttachmentPoint_Max+1] =
GL_STENCIL_ATTACHMENT // nzAttachmentPoint_Stencil
};
static_assert(sizeof(NzOpenGL::Attachment)/sizeof(GLenum) == nzAttachmentPoint_Max+1, "Attachment array is incomplete");
nzUInt8 NzOpenGL::AttributeIndex[nzAttributeUsage_Max+1] =
{
10, // nzAttributeUsage_InstanceData0
@ -1249,6 +1251,8 @@ nzUInt8 NzOpenGL::AttributeIndex[nzAttributeUsage_Max+1] =
9 // nzAttributeUsage_Userdata5
};
static_assert(sizeof(NzOpenGL::AttributeIndex)/sizeof(nzUInt8) == nzAttributeUsage_Max+1, "Attribute index array is incomplete");
GLenum NzOpenGL::AttributeType[nzAttributeType_Max+1] =
{
GL_UNSIGNED_BYTE, // nzAttributeType_Color
@ -1262,6 +1266,8 @@ GLenum NzOpenGL::AttributeType[nzAttributeType_Max+1] =
GL_FLOAT // nzAttributeType_Float4
};
static_assert(sizeof(NzOpenGL::AttributeType)/sizeof(GLenum) == nzAttributeType_Max+1, "Attribute type array is incomplete");
GLenum NzOpenGL::BlendFunc[nzBlendFunc_Max+1] =
{
GL_DST_ALPHA, // nzBlendFunc_DestAlpha
@ -1276,6 +1282,8 @@ GLenum NzOpenGL::BlendFunc[nzBlendFunc_Max+1] =
GL_ZERO // nzBlendFunc_Zero
};
static_assert(sizeof(NzOpenGL::BlendFunc)/sizeof(GLenum) == nzBlendFunc_Max+1, "Blend func array is incomplete");
GLenum NzOpenGL::BufferLock[nzBufferAccess_Max+1] =
{
GL_WRITE_ONLY, // nzBufferAccess_DiscardAndWrite
@ -1284,6 +1292,8 @@ GLenum NzOpenGL::BufferLock[nzBufferAccess_Max+1] =
GL_WRITE_ONLY // nzBufferAccess_WriteOnly
};
static_assert(sizeof(NzOpenGL::BufferLock)/sizeof(GLenum) == nzBufferAccess_Max+1, "Buffer lock array is incomplete");
GLenum NzOpenGL::BufferLockRange[nzBufferAccess_Max+1] =
{
GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_WRITE_BIT, // nzBufferAccess_DiscardAndWrite
@ -1292,18 +1302,24 @@ GLenum NzOpenGL::BufferLockRange[nzBufferAccess_Max+1] =
GL_MAP_WRITE_BIT // nzBufferAccess_WriteOnly
};
static_assert(sizeof(NzOpenGL::BufferLockRange)/sizeof(GLenum) == nzBufferAccess_Max+1, "Buffer lock range array is incomplete");
GLenum NzOpenGL::BufferTarget[nzBufferType_Max+1] =
{
GL_ELEMENT_ARRAY_BUFFER, // nzBufferType_Index,
GL_ARRAY_BUFFER, // nzBufferType_Vertex
};
static_assert(sizeof(NzOpenGL::BufferTarget)/sizeof(GLenum) == nzBufferType_Max+1, "Buffer target array is incomplete");
GLenum NzOpenGL::BufferTargetBinding[nzBufferType_Max+1] =
{
GL_ELEMENT_ARRAY_BUFFER_BINDING, // nzBufferType_Index,
GL_ARRAY_BUFFER_BINDING, // nzBufferType_Vertex
};
static_assert(sizeof(NzOpenGL::BufferTargetBinding)/sizeof(GLenum) == nzBufferType_Max+1, "Buffer target binding array is incomplete");
GLenum NzOpenGL::BufferUsage[nzBufferUsage_Max+1] =
{
// J'ai choisi DYNAMIC à la place de STREAM car DYNAMIC semble plus adapté au profil "une mise à jour pour quelques rendus"
@ -1313,6 +1329,8 @@ GLenum NzOpenGL::BufferUsage[nzBufferUsage_Max+1] =
GL_STATIC_DRAW // nzBufferUsage_Static
};
static_assert(sizeof(NzOpenGL::BufferUsage)/sizeof(GLenum) == nzBufferUsage_Max+1, "Buffer usage array is incomplete");
GLenum NzOpenGL::CubemapFace[6] =
{
GL_TEXTURE_CUBE_MAP_POSITIVE_X, // nzCubemapFace_PositiveX
@ -1323,6 +1341,8 @@ GLenum NzOpenGL::CubemapFace[6] =
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z // nzCubemapFace_NegativeZ
};
static_assert(sizeof(NzOpenGL::CubemapFace)/sizeof(GLenum) == 6, "Cubemap face array is incomplete");
GLenum NzOpenGL::FaceCulling[nzFaceCulling_Max+1] =
{
GL_BACK, // nzFaceCulling_Back
@ -1330,6 +1350,8 @@ GLenum NzOpenGL::FaceCulling[nzFaceCulling_Max+1] =
GL_FRONT_AND_BACK // nzFaceCulling_FrontAndBack
};
static_assert(sizeof(NzOpenGL::FaceCulling)/sizeof(GLenum) == nzFaceCulling_Max+1, "Face culling array is incomplete");
GLenum NzOpenGL::FaceFilling[nzFaceFilling_Max+1] =
{
GL_POINT, // nzFaceFilling_Point
@ -1337,6 +1359,8 @@ GLenum NzOpenGL::FaceFilling[nzFaceFilling_Max+1] =
GL_FILL // nzFaceFilling_Fill
};
static_assert(sizeof(NzOpenGL::FaceFilling)/sizeof(GLenum) == nzFaceFilling_Max+1, "Face filling array is incomplete");
GLenum NzOpenGL::PrimitiveMode[nzPrimitiveMode_Max+1] =
{
GL_LINES, // nzPrimitiveMode_LineList
@ -1347,6 +1371,8 @@ GLenum NzOpenGL::PrimitiveMode[nzPrimitiveMode_Max+1] =
GL_TRIANGLE_FAN // nzPrimitiveMode_TriangleFan
};
static_assert(sizeof(NzOpenGL::PrimitiveMode)/sizeof(GLenum) == nzPrimitiveMode_Max+1, "Primitive mode array is incomplete");
GLenum NzOpenGL::RendererComparison[nzRendererComparison_Max+1] =
{
GL_ALWAYS, // nzRendererComparison_Always
@ -1358,6 +1384,8 @@ GLenum NzOpenGL::RendererComparison[nzRendererComparison_Max+1] =
GL_NEVER // nzRendererComparison_Never
};
static_assert(sizeof(NzOpenGL::RendererComparison)/sizeof(GLenum) == nzRendererComparison_Max+1, "Renderer comparison array is incomplete");
GLenum NzOpenGL::RendererParameter[nzRendererParameter_Max+1] =
{
GL_BLEND, // nzRendererParameter_Blend
@ -1369,6 +1397,8 @@ GLenum NzOpenGL::RendererParameter[nzRendererParameter_Max+1] =
GL_STENCIL_TEST // nzRendererParameter_StencilTest
};
static_assert(sizeof(NzOpenGL::RendererParameter)/sizeof(GLenum) == nzRendererParameter_Max+1, "Renderer parameter array is incomplete");
GLenum NzOpenGL::SamplerWrapMode[nzSamplerWrap_Max+1] =
{
GL_CLAMP_TO_EDGE, // nzTextureWrap_Clamp
@ -1376,6 +1406,8 @@ GLenum NzOpenGL::SamplerWrapMode[nzSamplerWrap_Max+1] =
GL_REPEAT // nzTextureWrap_Repeat
};
static_assert(sizeof(NzOpenGL::SamplerWrapMode)/sizeof(GLenum) == nzSamplerWrap_Max+1, "Sampler wrap mode array is incomplete");
GLenum NzOpenGL::ShaderType[nzShaderType_Max+1] =
{
GL_FRAGMENT_SHADER, // nzShaderType_Fragment
@ -1383,6 +1415,8 @@ GLenum NzOpenGL::ShaderType[nzShaderType_Max+1] =
GL_VERTEX_SHADER // nzShaderType_Vertex
};
static_assert(sizeof(NzOpenGL::ShaderType)/sizeof(GLenum) == nzShaderType_Max+1, "Shader type array is incomplete");
GLenum NzOpenGL::StencilOperation[nzStencilOperation_Max+1] =
{
GL_DECR, // nzStencilOperation_Decrement
@ -1395,6 +1429,8 @@ GLenum NzOpenGL::StencilOperation[nzStencilOperation_Max+1] =
GL_ZERO // nzStencilOperation_Zero
};
static_assert(sizeof(NzOpenGL::StencilOperation)/sizeof(GLenum) == nzStencilOperation_Max+1, "Stencil operation array is incomplete");
GLenum NzOpenGL::TextureTarget[nzImageType_Max+1] =
{
GL_TEXTURE_1D, // nzImageType_1D
@ -1405,6 +1441,8 @@ GLenum NzOpenGL::TextureTarget[nzImageType_Max+1] =
GL_TEXTURE_CUBE_MAP // nzImageType_Cubemap
};
static_assert(sizeof(NzOpenGL::TextureTarget)/sizeof(GLenum) == nzImageType_Max+1, "Texture target array is incomplete");
GLenum NzOpenGL::TextureTargetBinding[nzImageType_Max+1] =
{
GL_TEXTURE_BINDING_1D, // nzImageType_1D
@ -1415,6 +1453,8 @@ GLenum NzOpenGL::TextureTargetBinding[nzImageType_Max+1] =
GL_TEXTURE_BINDING_CUBE_MAP // nzImageType_Cubemap
};
static_assert(sizeof(NzOpenGL::TextureTargetBinding)/sizeof(GLenum) == nzImageType_Max+1, "Texture target binding array is incomplete");
GLenum NzOpenGL::TextureTargetProxy[nzImageType_Max+1] =
{
GL_PROXY_TEXTURE_1D, // nzImageType_1D
@ -1425,6 +1465,8 @@ GLenum NzOpenGL::TextureTargetProxy[nzImageType_Max+1] =
GL_PROXY_TEXTURE_CUBE_MAP // nzImageType_Cubemap
};
static_assert(sizeof(NzOpenGL::TextureTargetProxy)/sizeof(GLenum) == nzImageType_Max+1, "Texture target proxy array is incomplete");
PFNGLACTIVETEXTUREPROC glActiveTexture = nullptr;
PFNGLATTACHSHADERPROC glAttachShader = nullptr;
PFNGLBEGINQUERYPROC glBeginQuery = nullptr;

View File

@ -23,6 +23,8 @@ namespace
4 // nzAttributeType_Float4
};
static_assert(sizeof(attributeSize)/sizeof(unsigned int) == nzAttributeType_Max+1, "Attribute size array is incomplete");
unsigned int attributeStride[nzAttributeType_Max+1] =
{
4*sizeof(nzUInt8), // nzAttributeType_Color
@ -35,6 +37,8 @@ namespace
3*sizeof(float), // nzAttributeType_Float3
4*sizeof(float) // nzAttributeType_Float4
};
static_assert(sizeof(attributeStride)/sizeof(unsigned int) == nzAttributeType_Max+1, "Attribute stride array is incomplete");
}
NzVertexDeclaration::NzVertexDeclaration() :