From 614a314888788cc83e5bb650af6572ffee0fa9de Mon Sep 17 00:00:00 2001 From: fincs Date: Sun, 9 Apr 2017 20:22:24 +0200 Subject: [PATCH] Add strict checking for C3D_DEPTHTYPE in C++ too --- include/c3d/renderqueue.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/include/c3d/renderqueue.h b/include/c3d/renderqueue.h index 0a817c6..2840308 100644 --- a/include/c3d/renderqueue.h +++ b/include/c3d/renderqueue.h @@ -43,13 +43,20 @@ typedef union __attribute__((__transparent_union__)) int __i; GPU_DEPTHBUF __e; } C3D_DEPTHTYPE; +#else +union C3D_DEPTHTYPE +{ +private: + int __i; + GPU_DEPTHBUF __e; +public: + C3D_DEPTHTYPE(GPU_DEPTHBUF e) : __e(e) {} + C3D_DEPTHTYPE(int i) : __i(-1) { (void)i; } +}; +#endif + #define C3D_DEPTHTYPE_OK(_x) ((_x).__i >= 0) #define C3D_DEPTHTYPE_VAL(_x) ((_x).__e) -#else -typedef int C3D_DEPTHTYPE; -#define C3D_DEPTHTYPE_OK(_x) ((_x) >= 0) -#define C3D_DEPTHTYPE_VAL(_x) ((GPU_DEPTHBUF)(_x)) -#endif C3D_RenderTarget* C3D_RenderTargetCreate(int width, int height, GPU_COLORBUF colorFmt, C3D_DEPTHTYPE depthFmt); C3D_RenderTarget* C3D_RenderTargetCreateFromTex(C3D_Tex* tex, GPU_TEXFACE face, int level, C3D_DEPTHTYPE depthFmt);