Bladeren bron

Allow definition of registry names for user types

Ole 9 jaren geleden
bovenliggende
commit
42fe8f9f20
2 gewijzigde bestanden met toevoegingen van 11 en 0 verwijderingen
  1. 2 0
      examples/usertypes.cpp
  2. 9 0
      lib/luwra/usertypes.hpp

+ 2 - 0
examples/usertypes.cpp

@@ -25,6 +25,8 @@ struct Point {
 	}
 };
 
+LUWRA_DEF_REGISTRY_NAME(Point, "Point")
+
 int main() {
 	lua_State* state = luaL_newstate();
 	luaL_openlibs(state);

+ 9 - 0
lib/luwra/usertypes.hpp

@@ -321,6 +321,15 @@ LUWRA_NS_END
 #define LUWRA_WRAP_CONSTRUCTOR(type, ...) \
 	(&luwra::internal::construct_user_type<luwra::internal::StripUserType<type>, __VA_ARGS__>)
 
+/**
+ * Define the registry name for a user type.
+ * \param type    User type
+ * \param regname Registry name
+ */
+#define LUWRA_DEF_REGISTRY_NAME(type, regname) \
+	template <> struct luwra::internal::UserTypeReg<type> { static const std::string name; }; \
+	const std::string luwra::internal::UserTypeReg<type>::name = (regname);
+
 #define LUWRA_FIELD(type, name) {__STRING(name), LUWRA_WRAP_FIELD(type::name)}
 #define LUWRA_METHOD(type, name) {__STRING(name), LUWRA_WRAP_METHOD(type::name)}
 #define LUWRA_FUNCTION(type, name) {__STRING(name), LUWRA_WRAP_FUNCTION(type::name)}