summaryrefslogtreecommitdiffstats
path: root/RenderScript
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-11-30 06:45:16 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-11-30 06:45:16 +0000
commita294546bcc7c883edd113f2c80d7f278ff8219ed (patch)
treec876be23d46c758a38ef92efd248400fa5fe9fe2 /RenderScript
parentAdded DRAW_FLAG_VERIFY_STATES and DISPATCH_FLAG_VERIFY_STATES flags (diff)
downloadDiligentTools-a294546bcc7c883edd113f2c80d7f278ff8219ed.tar.gz
DiligentTools-a294546bcc7c883edd113f2c80d7f278ff8219ed.zip
Improved type safety of flag enums
Diffstat (limited to 'RenderScript')
-rw-r--r--RenderScript/include/DeviceContextFuncBindings.h4
-rw-r--r--RenderScript/include/EnumMappings.h4
-rw-r--r--RenderScript/include/LuaBindings.h8
-rw-r--r--RenderScript/include/TextureParser.h4
-rw-r--r--RenderScript/src/BufferParser.cpp5
-rw-r--r--RenderScript/src/DeviceContextFuncBindings.cpp8
-rw-r--r--RenderScript/src/EnumMappings.cpp1
-rw-r--r--RenderScript/src/TextureParser.cpp5
8 files changed, 22 insertions, 17 deletions
diff --git a/RenderScript/include/DeviceContextFuncBindings.h b/RenderScript/include/DeviceContextFuncBindings.h
index f3bfa98..85fd527 100644
--- a/RenderScript/include/DeviceContextFuncBindings.h
+++ b/RenderScript/include/DeviceContextFuncBindings.h
@@ -29,7 +29,7 @@
namespace std
{
- DEFINE_ENUM_HASH( Diligent::COMMIT_SHADER_RESOURCES_FLAG )
+ DEFINE_ENUM_HASH( Diligent::COMMIT_SHADER_RESOURCES_FLAGS )
}
namespace Diligent
@@ -61,7 +61,7 @@ namespace Diligent
int TransitionShaderResources( lua_State * );
ClassMethodCaller<DeviceContextFuncBindings> m_TransitionShaderResourcesBinding;
- EnumMapping<COMMIT_SHADER_RESOURCES_FLAG> m_CommitShaderResFlagsEnumMapping;
+ EnumMapping<COMMIT_SHADER_RESOURCES_FLAGS> m_CommitShaderResFlagsEnumMapping;
String m_TexViewMetatableName;
String m_ShaderResBindingMetatableName;
diff --git a/RenderScript/include/EnumMappings.h b/RenderScript/include/EnumMappings.h
index 5e0231e..db0b699 100644
--- a/RenderScript/include/EnumMappings.h
+++ b/RenderScript/include/EnumMappings.h
@@ -43,7 +43,7 @@ namespace std
// Explicit namespace declaraion is necesseary to avoid
// name conflicts when building for windows store
DEFINE_ENUM_HASH( Diligent::BIND_FLAGS )
- DEFINE_ENUM_HASH( Diligent::CPU_ACCESS_FLAG )
+ DEFINE_ENUM_HASH( Diligent::CPU_ACCESS_FLAGS )
DEFINE_ENUM_HASH( Diligent::COMPARISON_FUNCTION )
DEFINE_ENUM_HASH( Diligent::BIND_SHADER_RESOURCES_FLAGS )
DEFINE_ENUM_HASH( Diligent::SHADER_TYPE )
@@ -65,7 +65,7 @@ namespace Diligent
};
#define DEFINE_ENUM_ELEMENT_MAPPING(EnumMapping, Elem) EnumMapping.AddMapping(#Elem, Elem)
- class CpuAccessFlagEnumMapping : public EnumMapping < Diligent::CPU_ACCESS_FLAG >
+ class CpuAccessFlagEnumMapping : public EnumMapping < Diligent::CPU_ACCESS_FLAGS >
{
public:
CpuAccessFlagEnumMapping();
diff --git a/RenderScript/include/LuaBindings.h b/RenderScript/include/LuaBindings.h
index e43b9a3..a09e1d0 100644
--- a/RenderScript/include/LuaBindings.h
+++ b/RenderScript/include/LuaBindings.h
@@ -461,7 +461,7 @@ namespace Diligent
BindingsMap.insert( std::make_pair( #Member, std::unique_ptr<MemberBinderBase>(pNewBinder) ) ); \
}while(false)
- template< typename EnumType, typename FlagsType = Uint32 >
+ template< typename EnumType, typename FlagsType = std::underlying_type<EnumType>::type >
class FlagsLoader : public MemberBinderBase
{
public:
@@ -478,7 +478,7 @@ namespace Diligent
int ArrayInd = 1;
for( auto it = m_EnumMapping.m_Val2StrMap.begin(); it != m_EnumMapping.m_Val2StrMap.end(); ++it )
{
- if( static_cast<EnumType>(Flags & it->first) == it->first )
+ if( it->first != 0 && static_cast<EnumType>(Flags & it->first) == it->first || Flags == 0 && it->first == 0)
{
lua_pushnumber( L, ArrayInd ); // -0 | +1 -> +1
PushValue<const String&>( L, it->second ); // -0 | +1 -> +1
@@ -490,7 +490,7 @@ namespace Diligent
virtual void SetValue( lua_State *L, int Index, void* pBasePointer )
{
- FlagsType Flags = 0;
+ FlagsType Flags = static_cast<FlagsType>(0);
if( lua_isnumber( L, Index ) )
{
Flags = static_cast<FlagsType>( ReadValueFromLua<Uint32>( L, Index ) );
@@ -528,7 +528,7 @@ namespace Diligent
{
String AllowableValues = GetEnumMappingsString<EnumType>( m_EnumMapping );
SCRIPT_PARSING_ERROR( L, "Unknown flag (\"", CurrFlagName, "\") provided for parameter ", m_MemberName, ". Only the following flags are allowed:\n", AllowableValues );
- return 0;
+ return static_cast<FlagsType>(0);
}
}
diff --git a/RenderScript/include/TextureParser.h b/RenderScript/include/TextureParser.h
index c35e3dd..0e0e542 100644
--- a/RenderScript/include/TextureParser.h
+++ b/RenderScript/include/TextureParser.h
@@ -30,7 +30,7 @@
namespace std
{
- DEFINE_ENUM_HASH( Diligent::MISC_TEXTURE_FLAG )
+ DEFINE_ENUM_HASH( Diligent::MISC_TEXTURE_FLAGS )
}
namespace Diligent
@@ -58,7 +58,7 @@ namespace Diligent
// Explicit namespace declaraion is necesseary to avoid
// name conflicts when building for windows store
- EnumMapping<Diligent::MISC_TEXTURE_FLAG> m_MiscFlagEnumMapping;
+ EnumMapping<Diligent::MISC_TEXTURE_FLAGS> m_MiscFlagEnumMapping;
UsageEnumMapping m_UsageEnumMapping;
CpuAccessFlagEnumMapping m_CpuAccessFlagEnumMapping;
diff --git a/RenderScript/src/BufferParser.cpp b/RenderScript/src/BufferParser.cpp
index ebf04d0..5a996a6 100644
--- a/RenderScript/src/BufferParser.cpp
+++ b/RenderScript/src/BufferParser.cpp
@@ -51,7 +51,7 @@ namespace Diligent
DEFINE_FLAGS_BINDER( m_Bindings, SBuffDescWrapper, BindFlags, Diligent::BIND_FLAGS, m_BindFlagEnumMapping );
DEFINE_ENUM_BINDER( m_Bindings, SBuffDescWrapper, Usage, m_UsageEnumMapping );
- DEFINE_FLAGS_BINDER( m_Bindings, SBuffDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAG, m_CpuAccessFlagEnumMapping );
+ DEFINE_FLAGS_BINDER( m_Bindings, SBuffDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAGS, m_CpuAccessFlagEnumMapping );
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_UNDEFINED );
DEFINE_ENUM_ELEMENT_MAPPING( m_BuffModeEnumMapping, BUFFER_MODE_FORMATTED );
@@ -66,6 +66,7 @@ namespace Diligent
DEFINE_BINDER( m_Bindings, SBuffDescWrapper, ElementByteStride );
+ DEFINE_ENUM_ELEMENT_MAPPING( m_SetVBFlagEnumMapping, SET_VERTEX_BUFFERS_FLAG_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( m_SetVBFlagEnumMapping, SET_VERTEX_BUFFERS_FLAG_RESET );
};
@@ -139,7 +140,7 @@ namespace Diligent
}
}
- Uint32 Flags = 0;
+ SET_VERTEX_BUFFERS_FLAGS Flags = SET_VERTEX_BUFFERS_FLAG_NONE;
Uint32 NumBuffers = 0;
IBuffer *pBuffs[MaxBufferSlots] = {};
Uint32 Offsets[MaxBufferSlots] = {};
diff --git a/RenderScript/src/DeviceContextFuncBindings.cpp b/RenderScript/src/DeviceContextFuncBindings.cpp
index 3a154d2..f32f350 100644
--- a/RenderScript/src/DeviceContextFuncBindings.cpp
+++ b/RenderScript/src/DeviceContextFuncBindings.cpp
@@ -46,7 +46,9 @@ namespace Diligent
m_ShaderResBindingMetatableName( pSRBParser->GetMetatableName() ),
m_PSOMetatableName(pPSOParser->GetMetatableName())
{
+ DEFINE_ENUM_ELEMENT_MAPPING( m_CommitShaderResFlagsEnumMapping, COMMIT_SHADER_RESOURCES_FLAG_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( m_CommitShaderResFlagsEnumMapping, COMMIT_SHADER_RESOURCES_FLAG_TRANSITION_RESOURCES );
+ DEFINE_ENUM_ELEMENT_MAPPING( m_CommitShaderResFlagsEnumMapping, COMMIT_SHADER_RESOURCES_FLAG_VERIFY_STATES );
};
int DeviceContextFuncBindings::SetRenderTargets( lua_State *L )
@@ -123,7 +125,7 @@ namespace Diligent
ITextureView *pView = nullptr;
Float32 fDepth = 1.f;
Uint8 Stencil = 0;
- Uint32 ClearFlags = 0;
+ CLEAR_DEPTH_STENCIL_FLAGS ClearFlags = CLEAR_DEPTH_FLAG_NONE;
int CurrArg = 1;
if( CurrArg <= NumArgs )
@@ -199,12 +201,12 @@ namespace Diligent
}
}
- Uint32 Flags = 0;
+ COMMIT_SHADER_RESOURCES_FLAGS Flags = COMMIT_SHADER_RESOURCES_FLAG_NONE;
if(NumArgs >= CurrArg &&
(lua_type( L, CurrArg ) == LUA_TSTRING ||
lua_type( L, CurrArg ) == LUA_TTABLE ) )
{
- FlagsLoader<COMMIT_SHADER_RESOURCES_FLAG> CommitShaderResFlagsLoader(0, "CommitShaderResourcesFlag", m_CommitShaderResFlagsEnumMapping);
+ FlagsLoader<COMMIT_SHADER_RESOURCES_FLAGS> CommitShaderResFlagsLoader(0, "CommitShaderResourcesFlag", m_CommitShaderResFlagsEnumMapping);
CommitShaderResFlagsLoader.SetValue( L, CurrArg, &Flags );
++CurrArg;
}
diff --git a/RenderScript/src/EnumMappings.cpp b/RenderScript/src/EnumMappings.cpp
index bcefd89..84ce7d9 100644
--- a/RenderScript/src/EnumMappings.cpp
+++ b/RenderScript/src/EnumMappings.cpp
@@ -30,6 +30,7 @@ namespace Diligent
{
CpuAccessFlagEnumMapping::CpuAccessFlagEnumMapping()
{
+ DEFINE_ENUM_ELEMENT_MAPPING( (*this), CPU_ACCESS_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( (*this), CPU_ACCESS_READ );
DEFINE_ENUM_ELEMENT_MAPPING( (*this), CPU_ACCESS_WRITE );
}
diff --git a/RenderScript/src/TextureParser.cpp b/RenderScript/src/TextureParser.cpp
index 2ccd683..6515ebd 100644
--- a/RenderScript/src/TextureParser.cpp
+++ b/RenderScript/src/TextureParser.cpp
@@ -145,10 +145,11 @@ namespace Diligent
DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, BindFlags, Diligent::BIND_FLAGS, m_BindFlagEnumMapping );
DEFINE_ENUM_BINDER( m_Bindings, STexDescWrapper, Usage, m_UsageEnumMapping );
- DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAG, m_CpuAccessFlagEnumMapping );
+ DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, CPUAccessFlags, CPU_ACCESS_FLAGS, m_CpuAccessFlagEnumMapping );
+ DEFINE_ENUM_ELEMENT_MAPPING( m_MiscFlagEnumMapping, MISC_TEXTURE_FLAG_NONE );
DEFINE_ENUM_ELEMENT_MAPPING( m_MiscFlagEnumMapping, MISC_TEXTURE_FLAG_GENERATE_MIPS );
- DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, MiscFlags, Diligent::MISC_TEXTURE_FLAG, m_MiscFlagEnumMapping );
+ DEFINE_FLAGS_BINDER( m_Bindings, STexDescWrapper, MiscFlags, Diligent::MISC_TEXTURE_FLAGS, m_MiscFlagEnumMapping );
DEFINE_BINDER_EX( m_Bindings, STexDescWrapper, ClearValue, OptimizedClearValue, 0 );
};