From 3ce27d02849a287044813f75db009f2b72da6807 Mon Sep 17 00:00:00 2001 From: Celtic Minstrel Date: Mon, 15 Feb 2021 10:42:01 -0500 Subject: [PATCH] Make it easier to deprecate Lua attributes in C++ __index metafunctions --- src/scripting/lua_common.hpp | 44 +++++++++++++++++++++++++++++++ src/scripting/lua_kernel_base.cpp | 4 +-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/scripting/lua_common.hpp b/src/scripting/lua_common.hpp index fda4ca22ab00..03f88815db9c 100644 --- a/src/scripting/lua_common.hpp +++ b/src/scripting/lua_common.hpp @@ -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) diff --git a/src/scripting/lua_kernel_base.cpp b/src/scripting/lua_kernel_base.cpp index f3186dc3c1c4..8a003ad90d48 100644 --- a/src/scripting/lua_kernel_base.cpp +++ b/src/scripting/lua_kernel_base.cpp @@ -918,9 +918,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("mp_debug", game_config::mp_debug);