summaryrefslogtreecommitdiffstats
path: root/RenderScript/include/LuaBindings.h
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2018-04-14 18:29:09 +0000
committerEgor Yusov <egor.yusov@gmail.com>2018-04-14 18:29:09 +0000
commitc09883fbe3951cd77543003ae1c6fdf6e5a11517 (patch)
tree4bbcf4b08d6825f904bb613f3463dcfda7964a61 /RenderScript/include/LuaBindings.h
parentMinor update to comply with updated graphics types (diff)
downloadDiligentTools-c09883fbe3951cd77543003ae1c6fdf6e5a11517.tar.gz
DiligentTools-c09883fbe3951cd77543003ae1c6fdf6e5a11517.zip
Moved primitive topology from draw attribs to pipeline desc; fixed multiple issue with mismatching types used by Lua parsers
Diffstat (limited to 'RenderScript/include/LuaBindings.h')
-rw-r--r--RenderScript/include/LuaBindings.h22
1 files changed, 12 insertions, 10 deletions
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<Diligent::HashMapStringKey, std::unique_ptr<MemberBinderBase> > BindingsMapType;
-#define DEFINE_BINDER(BindingsMap, Struct, Member, type, ValidationFunc) \
- {\
+#define DEFINE_BINDER_EX(BindingsMap, Struct, Member, type, ValidationFunc) \
+ do{\
auto *pNewBinder = new MemberBinder<type>( 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<MemberBinderBase>(pNewBinder) ) ); \
- }
+ }while(false)
+
+#define DEFINE_BINDER(BindingsMap, Struct, Member) DEFINE_BINDER_EX(BindingsMap, Struct, Member, decltype(Struct::Member), Validator<decltype(Struct::Member)>() )
template<typename ValueType>
void SkipValidationFunc( const ValueType & )
@@ -451,13 +453,13 @@ namespace Diligent
const EnumMapping<EnumType> &m_EnumMapping;
};
-#define DEFINE_ENUM_BINDER(BindingsMap, Struct, Member, type, EnumMapping ) \
- {\
- auto *pNewBinder = new EnumMemberBinder<type>( offsetof( Struct, Member ), #Member, EnumMapping ); \
+#define DEFINE_ENUM_BINDER(BindingsMap, Struct, Member, EnumMapping ) \
+ do{\
+ auto *pNewBinder = new EnumMemberBinder<decltype(Struct::Member)>( 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<MemberBinderBase>(pNewBinder) ) ); \
- }
+ }while(false)
template< typename EnumType, typename FlagsType = Uint32 >
class FlagsLoader : public MemberBinderBase
@@ -534,12 +536,12 @@ namespace Diligent
const EnumMapping<EnumType> &m_EnumMapping;
};
#define DEFINE_FLAGS_BINDER(BindingsMap, Struct, Member, type, EnumMapping ) \
- {\
- auto *pNewBinder = new FlagsLoader<type>( offsetof( Struct, Member ), #Member, EnumMapping ); \
+ do{\
+ auto *pNewBinder = new FlagsLoader<type, decltype(Struct::Member)>( 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<MemberBinderBase>(pNewBinder) ) ); \
- }
+ }while(false)
template<typename FieldType>