Make it easier to deprecate Lua attributes in C++ __index metafunctions

This commit is contained in:
Celtic Minstrel 2021-02-15 10:42:01 -05:00
parent e7ec2fbca2
commit f4d528f616
2 changed files with 45 additions and 3 deletions

View file

@ -207,6 +207,14 @@ int luaW_pcall_internal(lua_State *L, int nArgs, int nRets);
int luaW_type_error(lua_State *L, int narg, const char *tname);
int luaW_type_error(lua_State *L, int narg, const char* kpath, const char *tname);
#define deprecate_attrib(name, prefix, level, version, msg) deprecated_message(prefix "." #name, DEP_LEVEL::level, version, msg)
#define return_deprecated_attrib(type_macro, name, accessor, prefix, level, version, msg) \
type_macro(name, ( \
deprecate_attrib(name, prefix, level, version, msg), \
accessor \
))
#define return_tstring_attrib(name, accessor) \
do { \
if (strcmp(m, (name)) == 0) { \
@ -214,6 +222,8 @@ do { \
return 1; \
} \
} while(false)
#define return_tstring_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_tstring_attrib, name, accessor, prefix, level, version, msg)
#define return_cstring_attrib(name, accessor) \
do { \
@ -222,6 +232,8 @@ do { \
return 1; \
} \
} while(false)
#define return_cstring_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_cstring_attrib, name, accessor, prefix, level, version, msg)
#define return_string_attrib(name, accessor) \
do { \
@ -231,6 +243,8 @@ do { \
return 1; \
} \
} while(false)
#define return_string_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_string_attrib, name, accessor, prefix, level, version, msg)
#define return_int_attrib(name, accessor) \
do { \
@ -239,6 +253,8 @@ do { \
return 1; \
} \
} while(false)
#define return_int_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_int_attrib, name, accessor, prefix, level, version, msg)
#define return_float_attrib(name, accessor) \
do { \
@ -247,6 +263,8 @@ do { \
return 1; \
} \
} while(false)
#define return_float_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_float_attrib, name, accessor, prefix, level, version, msg)
#define return_bool_attrib(name, accessor) \
do { \
@ -255,6 +273,8 @@ do { \
return 1; \
} \
} while(false)
#define return_bool_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_bool_attrib, name, accessor, prefix, level, version, msg)
#define return_cfg_attrib(name, accessor) \
do { \
@ -265,6 +285,8 @@ do { \
return 1; \
} \
} while(false)
#define return_cfg_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_cfg_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define return_cfgref_attrib(name, accessor) \
do { \
@ -273,6 +295,8 @@ do { \
return 1; \
} \
} while(false)
#define return_cfgref_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_cfgref_attrib, name, accessor, prefix, level, version, msg)
#define return_vector_string_attrib(name, accessor) \
do { \
@ -288,6 +312,8 @@ do { \
return 1; \
} \
} while(false)
#define return_vector_string_attrib_deprecated(name, prefix, level, version, msg, accessor) \
return_deprecated_attrib(return_vector_string_attrib, name, accessor, prefix, level, version, msg)
#define modify_tstring_attrib(name, accessor) \
do { \
@ -297,6 +323,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_tstring_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_tstring_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define modify_string_attrib(name, accessor) \
do { \
@ -306,6 +334,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_string_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_string_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define modify_int_attrib(name, accessor) \
do { \
@ -315,6 +345,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_int_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_int_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define modify_int_attrib_check_range(name, accessor, allowed_min, allowed_max) \
do { \
@ -325,6 +357,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_int_attrib_check_range_deprecated(name, prefix, level, version, msg, accessor, allowed_min, allowed_max) \
modify_int_attrib_check_range(name, deprecate_attrib(name, prefix, level, version, msg); accessor, allowed_min, allowed_max)
#define modify_float_attrib(name, accessor) \
do { \
@ -334,6 +368,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_float_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_float_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define modify_float_attrib_check_range(name, accessor, allowed_min, allowed_max) \
do { \
@ -344,6 +380,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_float_attrib_check_range_deprecated(name, prefix, level, version, msg, accessor, allowed_min, allowed_max) \
modify_float_attrib_check_range(name, deprecate_attrib(name, prefix, level, version, msg); accessor, allowed_min, allowed_max)
#define modify_bool_attrib(name, accessor) \
do { \
@ -353,6 +391,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_bool_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_bool_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define modify_cfg_attrib(name, accessor) \
do { \
@ -362,6 +402,8 @@ do { \
return 0; \
} \
} while(false)
#define modify_cfg_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_cfg_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)
#define modify_vector_string_attrib(name, accessor) \
do { \
@ -381,3 +423,5 @@ do { \
return 0; \
} \
} while(false)
#define modify_vector_string_attrib_deprecated(name, prefix, level, version, msg, accessor) \
modify_vector_string_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

View file

@ -974,9 +974,7 @@ int lua_kernel_base::impl_game_config_get(lua_State* L)
return_int_attrib("recall_cost", game_config::recall_cost);
return_int_attrib("kill_experience", game_config::kill_experience);
return_int_attrib("combat_experience", game_config::combat_experience);
return_string_attrib("version",
(deprecated_message("wesnoth.game_config.version", DEP_LEVEL::INDEFINITE, "1.17", "Use version.current() instead"),
game_config::wesnoth_version.str()));
return_string_attrib_deprecated("version", "wesnoth.game_config", INDEFINITE, "1.17", "Use version.current() instead", game_config::wesnoth_version.str());
return_bool_attrib("debug", game_config::debug);
return_bool_attrib("debug_lua", game_config::debug_lua);
return_bool_attrib("strict_lua", game_config::strict_lua);