From c09883fbe3951cd77543003ae1c6fdf6e5a11517 Mon Sep 17 00:00:00 2001 From: Egor Yusov Date: Sat, 14 Apr 2018 11:29:09 -0700 Subject: Moved primitive topology from draw attribs to pipeline desc; fixed multiple issue with mismatching types used by Lua parsers --- RenderScript/include/LuaBindings.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'RenderScript/include/LuaBindings.h') diff --git a/RenderScript/include/LuaBindings.h b/RenderScript/include/LuaBindings.h index 74ea9e8..8f04f5f 100644 --- a/RenderScript/include/LuaBindings.h +++ b/RenderScript/include/LuaBindings.h @@ -122,13 +122,15 @@ namespace Diligent }; typedef std::unordered_map > BindingsMapType; -#define DEFINE_BINDER(BindingsMap, Struct, Member, type, ValidationFunc) \ - {\ +#define DEFINE_BINDER_EX(BindingsMap, Struct, Member, type, ValidationFunc) \ + do{\ auto *pNewBinder = new MemberBinder( offsetof( Struct, Member ), ValidationFunc ); \ /* No need to make a copy of #Member since it is constant string. */ \ /* HashMapStringKey will simply keep pointer to it */ \ BindingsMap.insert( std::make_pair( #Member, std::unique_ptr(pNewBinder) ) ); \ - } + }while(false) + +#define DEFINE_BINDER(BindingsMap, Struct, Member) DEFINE_BINDER_EX(BindingsMap, Struct, Member, decltype(Struct::Member), Validator() ) template void SkipValidationFunc( const ValueType & ) @@ -451,13 +453,13 @@ namespace Diligent const EnumMapping &m_EnumMapping; }; -#define DEFINE_ENUM_BINDER(BindingsMap, Struct, Member, type, EnumMapping ) \ - {\ - auto *pNewBinder = new EnumMemberBinder( offsetof( Struct, Member ), #Member, EnumMapping ); \ +#define DEFINE_ENUM_BINDER(BindingsMap, Struct, Member, EnumMapping ) \ + do{\ + auto *pNewBinder = new EnumMemberBinder( offsetof( Struct, Member ), #Member, EnumMapping ); \ /* No need to make a copy of #Member since it is constant string. */ \ /* HashMapStringKey will simply keep pointer to it */ \ BindingsMap.insert( std::make_pair( #Member, std::unique_ptr(pNewBinder) ) ); \ - } + }while(false) template< typename EnumType, typename FlagsType = Uint32 > class FlagsLoader : public MemberBinderBase @@ -534,12 +536,12 @@ namespace Diligent const EnumMapping &m_EnumMapping; }; #define DEFINE_FLAGS_BINDER(BindingsMap, Struct, Member, type, EnumMapping ) \ - {\ - auto *pNewBinder = new FlagsLoader( offsetof( Struct, Member ), #Member, EnumMapping ); \ + do{\ + auto *pNewBinder = new FlagsLoader( offsetof( Struct, Member ), #Member, EnumMapping ); \ /* No need to make a copy of #Member since it is constant string. */ \ /* HashMapStringKey will simply keep pointer to it */ \ BindingsMap.insert( std::make_pair( #Member, std::unique_ptr(pNewBinder) ) ); \ - } + }while(false) template -- cgit v1.2.3