Skip to content

Commit

Permalink
Make it easier to deprecate Lua attributes in C++ __index metafunctions
Browse files Browse the repository at this point in the history
  • Loading branch information
CelticMinstrel committed Feb 15, 2021
1 parent 5b887c3 commit 3ce27d0
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 3 deletions.
44 changes: 44 additions & 0 deletions src/scripting/lua_common.hpp
Expand Up @@ -207,13 +207,23 @@ 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) { \
luaW_pushtstring(L, (accessor)); \
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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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 { \
Expand All @@ -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)
4 changes: 1 addition & 3 deletions src/scripting/lua_kernel_base.cpp
Expand Up @@ -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);
Expand Down

0 comments on commit 3ce27d0

Please sign in to comment.