Added static assertions to secure code
Former-commit-id: 207f1135b3b40cee74fbf8ba98e6fb7379ba8c33
This commit is contained in:
parent
19e02a900b
commit
1ebaf4749c
|
|
@ -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() :
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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() :
|
||||
|
|
|
|||
Loading…
Reference in New Issue