The Battle for Wesnoth  1.19.8+dev
Classes | Namespaces | Macros | Functions
lua_common.hpp File Reference
#include "config.hpp"
#include "variable_info.hpp"
#include "map/location.hpp"
#include <string>
#include <string_view>
#include <vector>
Include dependency graph for lua_common.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  luaW_PrintStack
 

Namespaces

 lua_common
 

Macros

#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)
 
#define return_tstring_attrib(name, accessor)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 
#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)
 

Functions

int lua_common::intf_textdomain (lua_State *L)
 Creates an interface for gettext. More...
 
int lua_common::intf_tovconfig (lua_State *L)
 Creates a vconfig containing the WML table. More...
 
std::string lua_common::register_gettext_metatable (lua_State *L)
 Adds the gettext metatable. More...
 
std::string lua_common::register_tstring_metatable (lua_State *L)
 Adds the tstring metatable. More...
 
std::string lua_common::register_vconfig_metatable (lua_State *L)
 Adds the vconfig metatable. More...
 
void * operator new (std::size_t sz, lua_State *L, int nuv=0)
 
void operator delete (void *p, lua_State *L, int nuv)
 
bool luaW_getmetafield (lua_State *L, int idx, const char *key)
 Like luaL_getmetafield, but returns false if key is an empty string or begins with two underscores. More...
 
void luaW_pushvconfig (lua_State *L, const vconfig &cfg)
 Pushes a vconfig on the top of the stack. More...
 
void luaW_pushtstring (lua_State *L, const t_string &v)
 Pushes a t_string on the top of the stack. More...
 
void luaW_pushscalar (lua_State *L, const config::attribute_value &v)
 Converts an attribute value into a Lua object pushed at the top of the stack. More...
 
bool luaW_toscalar (lua_State *L, int index, config::attribute_value &v)
 Converts the value at the top of the stack to an attribute value. More...
 
bool luaW_totstring (lua_State *L, int index, t_string &str)
 Converts a scalar to a translatable string. More...
 
t_string luaW_checktstring (lua_State *L, int index)
 Converts a scalar to a translatable string. More...
 
bool luaW_iststring (lua_State *L, int index)
 
void luaW_filltable (lua_State *L, const config &cfg)
 Converts a config object to a Lua table. More...
 
void luaW_push_namedtuple (lua_State *L, const std::vector< std::string > &names)
 Push an empty "named tuple" onto the stack. More...
 
std::vector< std::string > luaW_to_namedtuple (lua_State *L, int idx)
 Get the keys of a "named tuple" from the stack. More...
 
void luaW_pushlocation (lua_State *L, const map_location &loc)
 Converts a map location object to a Lua table pushed at the top of the stack. More...
 
bool luaW_tolocation (lua_State *L, int index, map_location &loc)
 Converts an optional table or pair of integers to a map location object. More...
 
map_location luaW_checklocation (lua_State *L, int index)
 Converts an optional table or pair of integers to a map location object. More...
 
int luaW_push_locationset (lua_State *L, const std::set< map_location > &locs)
 Converts a set of map locations to a Lua table pushed at the top of the stack. More...
 
std::set< map_locationluaW_check_locationset (lua_State *L, int idx)
 Converts a table of integer pairs to a set of map location objects. More...
 
void luaW_pushconfig (lua_State *L, const config &cfg)
 Converts a config object to a Lua table pushed at the top of the stack. More...
 
bool luaW_toconfig (lua_State *L, int index, config &cfg)
 Converts an optional table or vconfig to a config object. More...
 
config luaW_checkconfig (lua_State *L, int index)
 Converts an optional table or vconfig to a config object. More...
 
bool luaW_tovconfig (lua_State *L, int index, vconfig &vcfg)
 Gets an optional vconfig from either a table or a userdata. More...
 
vconfig luaW_checkvconfig (lua_State *L, int index, bool allow_missing=false)
 Gets an optional vconfig from either a table or a userdata. More...
 
config luaW_checkconfig (lua_State *L, int index, const vconfig *&vcfg)
 Like the two-argument version, but if it was a vconfig, also returns a pointer to that vconfig. More...
 
bool luaW_getglobal (lua_State *L, const std::vector< std::string > &path)
 Pushes the value found by following the variadic names (char *), if the value is not nil. More...
 
template<typename... T>
bool luaW_getglobal (lua_State *L, T... path)
 Pushes the value found by following the variadic names (char *), if the value is not nil. More...
 
bool luaW_toboolean (lua_State *L, int n)
 
bool luaW_pushvariable (lua_State *L, variable_access_const &v)
 
bool luaW_checkvariable (lua_State *L, variable_access_create &v, int n)
 
bool luaW_tableget (lua_State *L, int index, const char *key)
 
std::string_view luaW_tostring (lua_State *L, int index)
 
std::string_view luaW_tostring_or_default (lua_State *L, int index, std::string_view def=std::string_view())
 
void chat_message (const std::string &caption, const std::string &msg)
 Displays a message in the chat window. More...
 
bool luaW_pcall (lua_State *L, int nArgs, int nRets, bool allow_wml_error=false)
 Calls a Lua function stored below its nArgs arguments at the top of the stack. More...
 
void push_error_handler (lua_State *L)
 
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)
 
luaW_PrintStack luaW_debugstack (lua_State *L)
 
std::ostream & operator<< (std::ostream &os, const luaW_PrintStack &)
 

Macro Definition Documentation

◆ deprecate_attrib

#define deprecate_attrib (   name,
  prefix,
  level,
  version,
  msg 
)    deprecated_message(prefix "." name, DEP_LEVEL::level, version, msg)

Definition at line 238 of file lua_common.hpp.

◆ modify_bool_attrib

#define modify_bool_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
bool value = luaW_toboolean(L, 3); \
{accessor;} \
return 0; \
} \
} while(false)
bool luaW_toboolean(lua_State *L, int n)

Definition at line 414 of file lua_common.hpp.

◆ modify_bool_attrib_deprecated

#define modify_bool_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     modify_bool_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 422 of file lua_common.hpp.

◆ modify_cfg_attrib

#define modify_cfg_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
const config& cfg = luaW_checkconfig(L, 3); \
{accessor;} \
return 0; \
} \
} while(false)
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:158
config luaW_checkconfig(lua_State *L, int index)
Converts an optional table or vconfig to a config object.

Definition at line 425 of file lua_common.hpp.

◆ modify_cfg_attrib_deprecated

#define modify_cfg_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     modify_cfg_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 433 of file lua_common.hpp.

◆ modify_float_attrib

#define modify_float_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
lua_Number value = luaL_checknumber(L, 3); \
{accessor;} \
return 0; \
} \
} while(false)

Definition at line 391 of file lua_common.hpp.

◆ modify_float_attrib_check_range

#define modify_float_attrib_check_range (   name,
  accessor,
  allowed_min,
  allowed_max 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
lua_Number value = luaL_checknumber(L, 3); \
if (value < (allowed_min) || (allowed_max) < value) return luaL_argerror(L, 3, "out of bounds"); \
{accessor;} \
return 0; \
} \
} while(false)

Definition at line 402 of file lua_common.hpp.

◆ modify_float_attrib_check_range_deprecated

#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)

Definition at line 411 of file lua_common.hpp.

◆ modify_float_attrib_deprecated

#define modify_float_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     modify_float_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 399 of file lua_common.hpp.

◆ modify_int_attrib

#define modify_int_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
int value = static_cast<int>(luaL_checknumber(L, 3)); \
{accessor;} \
return 0; \
} \
} while(false)

Definition at line 368 of file lua_common.hpp.

◆ modify_int_attrib_check_range

#define modify_int_attrib_check_range (   name,
  accessor,
  allowed_min,
  allowed_max 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
int value = static_cast<int>(luaL_checknumber(L, 3)); \
if (value < (allowed_min) || (allowed_max) < value) return luaL_argerror(L, 3, "out of bounds"); \
{accessor;} \
return 0; \
} \
} while(false)

Definition at line 379 of file lua_common.hpp.

◆ modify_int_attrib_check_range_deprecated

#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)

Definition at line 388 of file lua_common.hpp.

◆ modify_int_attrib_deprecated

#define modify_int_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     modify_int_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 376 of file lua_common.hpp.

◆ modify_string_attrib

#define modify_string_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
const char *value = luaL_checkstring(L, 3); \
{accessor;} \
return 0; \
} \
} while(false)

Definition at line 357 of file lua_common.hpp.

◆ modify_string_attrib_deprecated

#define modify_string_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     modify_string_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 365 of file lua_common.hpp.

◆ modify_tstring_attrib

#define modify_tstring_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
t_string value = luaW_checktstring(L, 3); \
{accessor;} \
return 0; \
} \
} while(false)
t_string luaW_checktstring(lua_State *L, int index)
Converts a scalar to a translatable string.
Definition: lua_common.cpp:635

Definition at line 346 of file lua_common.hpp.

◆ modify_tstring_attrib_deprecated

#define modify_tstring_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     modify_tstring_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 354 of file lua_common.hpp.

◆ modify_vector_string_attrib

#define modify_vector_string_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
std::vector<std::string> value; \
char const* message = "table with unnamed indices holding strings expected"; \
if (!lua_istable(L, 3)) return luaL_argerror(L, 3, message); \
unsigned length = lua_rawlen(L, 3); \
for (unsigned i = 1; i <= length; ++i) { \
lua_rawgeti(L, 3, i); \
char const* string = lua_tostring(L, 4); \
if(!string) return luaL_argerror(L, 2 + i, message); \
value.push_back(string); \
lua_pop(L, 1); \
} \
{accessor;} \
return 0; \
} \
} while(false)
std::size_t i
Definition: function.cpp:1029

Definition at line 436 of file lua_common.hpp.

◆ modify_vector_string_attrib_deprecated

#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)

Definition at line 454 of file lua_common.hpp.

◆ return_bool_attrib

#define return_bool_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
lua_pushboolean(L, (accessor)); \
return 1; \
} \
} while(false)

Definition at line 297 of file lua_common.hpp.

◆ return_bool_attrib_deprecated

#define return_bool_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_bool_attrib, name, accessor, prefix, level, version, msg)

Definition at line 304 of file lua_common.hpp.

◆ return_cfg_attrib

#define return_cfg_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
config cfg; \
{accessor;} \
luaW_pushconfig(L, cfg); \
return 1; \
} \
} while(false)

Definition at line 307 of file lua_common.hpp.

◆ return_cfg_attrib_deprecated

#define return_cfg_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_cfg_attrib(name, deprecate_attrib(name, prefix, level, version, msg); accessor)

Definition at line 316 of file lua_common.hpp.

◆ return_cfgref_attrib

#define return_cfgref_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
luaW_pushconfig(L, (accessor)); \
return 1; \
} \
} while(false)

Definition at line 319 of file lua_common.hpp.

◆ return_cfgref_attrib_deprecated

#define return_cfgref_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_cfgref_attrib, name, accessor, prefix, level, version, msg)

Definition at line 326 of file lua_common.hpp.

◆ return_cstring_attrib

#define return_cstring_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
lua_pushstring(L, (accessor)); \
return 1; \
} \
} while(false)

Definition at line 256 of file lua_common.hpp.

◆ return_cstring_attrib_deprecated

#define return_cstring_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_cstring_attrib, name, accessor, prefix, level, version, msg)

Definition at line 263 of file lua_common.hpp.

◆ return_deprecated_attrib

#define return_deprecated_attrib (   type_macro,
  name,
  accessor,
  prefix,
  level,
  version,
  msg 
)
Value:
type_macro(name, ( \
deprecate_attrib(name, prefix, level, version, msg), \
accessor \
))
#define deprecate_attrib(name, prefix, level, version, msg)
Definition: lua_common.hpp:238
static void msg(const char *act, debug_info &i, const char *to="", const char *result="")
Definition: debugger.cpp:109

Definition at line 240 of file lua_common.hpp.

◆ return_float_attrib

#define return_float_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
lua_pushnumber(L, (accessor)); \
return 1; \
} \
} while(false)

Definition at line 287 of file lua_common.hpp.

◆ return_float_attrib_deprecated

#define return_float_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_float_attrib, name, accessor, prefix, level, version, msg)

Definition at line 294 of file lua_common.hpp.

◆ return_int_attrib

#define return_int_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
lua_pushinteger(L, (accessor)); \
return 1; \
} \
} while(false)

Definition at line 277 of file lua_common.hpp.

◆ return_int_attrib_deprecated

#define return_int_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_int_attrib, name, accessor, prefix, level, version, msg)

Definition at line 284 of file lua_common.hpp.

◆ return_string_attrib

#define return_string_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
const std::string& str = (accessor); \
lua_pushlstring(L, str.c_str(), str.length()); \
return 1; \
} \
} while(false)

Definition at line 266 of file lua_common.hpp.

◆ return_string_attrib_deprecated

#define return_string_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_string_attrib, name, accessor, prefix, level, version, msg)

Definition at line 274 of file lua_common.hpp.

◆ return_tstring_attrib

#define return_tstring_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
luaW_pushtstring(L, (accessor)); \
return 1; \
} \
} while(false)

Definition at line 246 of file lua_common.hpp.

◆ return_tstring_attrib_deprecated

#define return_tstring_attrib_deprecated (   name,
  prefix,
  level,
  version,
  msg,
  accessor 
)     return_deprecated_attrib(return_tstring_attrib, name, accessor, prefix, level, version, msg)

Definition at line 253 of file lua_common.hpp.

◆ return_vector_string_attrib

#define return_vector_string_attrib (   name,
  accessor 
)
Value:
do { \
if (strcmp(m, (name)) == 0) { \
const std::vector<std::string>& vector = (accessor); \
lua_createtable(L, vector.size(), 0); \
int i = 1; \
for (const std::string& s : vector) { \
lua_pushlstring(L, s.c_str(), s.length()); \
lua_rawseti(L, -2, i); \
++i; \
} \
return 1; \
} \
} while(false)
static map_location::direction s

Definition at line 329 of file lua_common.hpp.

◆ return_vector_string_attrib_deprecated

#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)

Definition at line 343 of file lua_common.hpp.

Function Documentation

◆ chat_message()

void chat_message ( const std::string &  caption,
const std::string &  msg 
)

◆ luaW_check_locationset()

std::set<map_location> luaW_check_locationset ( lua_State *  L,
int  idx 
)

◆ luaW_checkconfig() [1/2]

config luaW_checkconfig ( lua_State *  L,
int  index 
)

◆ luaW_checkconfig() [2/2]

config luaW_checkconfig ( lua_State *  L,
int  index,
const vconfig *&  vcfg 
)

Like the two-argument version, but if it was a vconfig, also returns a pointer to that vconfig.

Definition at line 1020 of file lua_common.cpp.

References utf8::index(), luaW_checkconfig(), p, and vconfigKey.

◆ luaW_checklocation()

map_location luaW_checklocation ( lua_State *  L,
int  index 
)

◆ luaW_checktstring()

t_string luaW_checktstring ( lua_State *  L,
int  index 
)

◆ luaW_checkvariable()

bool luaW_checkvariable ( lua_State *  L,
variable_access_create v,
int  n 
)

◆ luaW_checkvconfig()

vconfig luaW_checkvconfig ( lua_State *  L,
int  index,
bool  allow_missing = false 
)

◆ luaW_debugstack()

luaW_PrintStack luaW_debugstack ( lua_State *  L)

Definition at line 911 of file lua_common.cpp.

◆ luaW_filltable()

void luaW_filltable ( lua_State *  L,
const config cfg 
)

Converts a config object to a Lua table.

The destination table should be at the top of the stack on entry. It is still at the top on exit.

Definition at line 654 of file lua_common.cpp.

References config::all_children_view(), config::attribute_range(), luaW_push_namedtuple(), and luaW_pushscalar().

Referenced by luaW_pushconfig(), and luaW_pushvariable().

◆ luaW_getglobal() [1/2]

bool luaW_getglobal ( lua_State *  L,
const std::vector< std::string > &  path 
)

◆ luaW_getglobal() [2/2]

template<typename... T>
bool luaW_getglobal ( lua_State *  L,
T...  path 
)

Pushes the value found by following the variadic names (char *), if the value is not nil.

Returns
true if an element was pushed.

Definition at line 196 of file lua_common.hpp.

References luaW_getglobal(), and game_config::path.

◆ luaW_getmetafield()

bool luaW_getmetafield ( lua_State *  L,
int  idx,
const char *  key 
)

Like luaL_getmetafield, but returns false if key is an empty string or begins with two underscores.

Definition at line 524 of file lua_common.cpp.

References n.

Referenced by impl_animator_get(), impl_floating_label_getmethod(), impl_music_get(), impl_source_get(), impl_track_get(), and impl_unit_attack_get().

◆ luaW_iststring()

bool luaW_iststring ( lua_State *  L,
int  index 
)

Definition at line 643 of file lua_common.cpp.

References utf8::index(), and tstringKey.

Referenced by game_lua_kernel::intf_allow_end_turn(), and lua_stringx::intf_str_format().

◆ luaW_pcall()

bool luaW_pcall ( lua_State *  L,
int  nArgs,
int  nRets,
bool  allow_wml_error = false 
)

◆ luaW_pcall_internal()

int luaW_pcall_internal ( lua_State *  L,
int  nArgs,
int  nRets 
)

◆ luaW_push_locationset()

int luaW_push_locationset ( lua_State *  L,
const std::set< map_location > &  locs 
)

Converts a set of map locations to a Lua table pushed at the top of the stack.

Definition at line 876 of file lua_common.cpp.

References i, loc, and luaW_pushlocation().

Referenced by ai::cfun_ai_get_avoid(), game_lua_kernel::intf_get_locations(), intf_mg_get_locations(), intf_mg_get_tiles_radius(), and intf_parse_shroud_bitmap().

◆ luaW_push_namedtuple()

void luaW_push_namedtuple ( lua_State *  L,
const std::vector< std::string > &  names 
)

Push an empty "named tuple" onto the stack.

A named tuple is an array where each index can also be accessed by name. Once it's pushed, you can set the elements, eg with lua_rawseti.

Definition at line 763 of file lua_common.cpp.

References i, impl_namedtuple_compare(), impl_namedtuple_dir(), impl_namedtuple_get(), impl_namedtuple_set(), impl_namedtuple_tostring(), lua_push(), and names.

Referenced by lua_common::impl_vconfig_get(), game_lua_kernel::intf_find_cost_map(), game_lua_kernel::intf_find_reach(), game_lua_kernel::intf_find_vision_range(), intf_named_tuple(), luaW_copy_upvalues(), luaW_filltable(), luaW_pushcubeloc(), luaW_pushlocation(), and push_color_palette().

◆ luaW_pushconfig()

void luaW_pushconfig ( lua_State *  L,
const config cfg 
)

◆ luaW_pushlocation()

void luaW_pushlocation ( lua_State *  L,
const map_location loc 
)

◆ luaW_pushscalar()

void luaW_pushscalar ( lua_State *  L,
const config::attribute_value v 
)

Converts an attribute value into a Lua object pushed at the top of the stack.

Definition at line 578 of file lua_common.cpp.

References config_attribute_value::apply_visitor().

Referenced by lua_common::impl_vconfig_get(), lua_common::impl_vconfig_pairs_iter(), lua_kernel_base::load_binary(), luaW_copy_upvalues(), luaW_filltable(), and luaW_pushvariable().

◆ luaW_pushtstring()

void luaW_pushtstring ( lua_State *  L,
const t_string v 
)

◆ luaW_pushvariable()

bool luaW_pushvariable ( lua_State *  L,
variable_access_const v 
)

◆ luaW_pushvconfig()

void luaW_pushvconfig ( lua_State *  L,
const vconfig cfg 
)

◆ luaW_tableget()

bool luaW_tableget ( lua_State *  L,
int  index,
const char *  key 
)

◆ luaW_to_namedtuple()

std::vector<std::string> luaW_to_namedtuple ( lua_State *  L,
int  idx 
)

Get the keys of a "named tuple" from the stack.

Returns an empty array if the stack element is not a named tuple.

Definition at line 795 of file lua_common.cpp.

References names.

Referenced by luaW_serialize_function().

◆ luaW_toboolean()

bool luaW_toboolean ( lua_State *  L,
int  n 
)

Definition at line 1083 of file lua_common.cpp.

References n.

Referenced by ai::ai_move(), ai::call_lua_filter_fcn(), game_lua_kernel::cfun_builtin_effect(), cfun_exec_candidate_action(), impl_add_animation(), ai::impl_ai_get(), impl_get_dir_suffix(), impl_is_deprecated(), impl_unit_status_set(), intf_add_modification(), intf_advance_unit(), game_lua_kernel::intf_allow_end_turn(), game_lua_kernel::intf_allow_undo(), game_lua_kernel::intf_delay(), game_lua_kernel::intf_find_cost_map(), intf_find_path(), lua_fileops::intf_have_file(), lua_wml::intf_load_wml(), game_lua_kernel::intf_lock_view(), game_lua_kernel::intf_log(), intf_music_add(), intf_on_board(), game_lua_kernel::intf_put_unit(), game_lua_kernel::intf_redraw(), game_lua_kernel::intf_scroll_to_tile(), game_lua_kernel::intf_select_unit(), game_lua_kernel::intf_set_village_owner(), game_lua_kernel::intf_skip_messages(), lua_stringx::intf_str_paren_split(), game_lua_kernel::intf_teleport(), intf_terrainmap_iter(), game_lua_kernel::intf_toggle_fog(), intf_unit_resistance(), game_lua_kernel::intf_zoom(), ai::lua_ai_load::lua_ai_load(), lua_check_impl::lua_check(), lua_check_impl::lua_to_or_default(), luaW_checkvariable(), luaW_get_attributes(), luaW_toscalar(), game_lua_kernel::mouse_button_callback(), read_rules_vector(), game_lua_kernel::run_filter(), game_lua_kernel::run_wml_conditional(), game_lua_kernel::run_wml_event(), lua_gui2::show_menu(), lua_gui2::show_message_box(), ai::lua_object< T >::to_type(), and WIDGET_SETTER().

◆ luaW_toconfig()

bool luaW_toconfig ( lua_State *  L,
int  index,
config cfg 
)

◆ luaW_tolocation()

bool luaW_tolocation ( lua_State *  L,
int  index,
map_location loc 
)

Converts an optional table or pair of integers to a map location object.

Parameters
Lthe pointer to the lua interpreter.
indexstack position of the table or first integer.
locthe location to write to.
Returns
false if a map location couldn't be matched.

Definition at line 819 of file lua_common.cpp.

References utf8::index(), loc, map_location::set_wml_x(), map_location::set_wml_y(), and vconfig::unconstructed_vconfig().

Referenced by ai::ai_recall(), ai::ai_recruit(), impl_add_animation(), impl_source_set(), impl_terrainmap_get(), impl_terrainmap_set(), lua_map_location::intf_distance_between(), game_lua_kernel::intf_erase_unit(), game_lua_kernel::intf_fire_event(), lua_map_location::intf_get_adjacent_tiles(), lua_map_location::intf_get_direction(), lua_map_location::intf_get_in_cubic(), lua_map_location::intf_get_relative_dir(), lua_map_location::intf_get_tile_ring(), lua_map_location::intf_get_tiles_in_radius(), game_lua_kernel::intf_get_time_area(), game_lua_kernel::intf_get_time_of_day(), game_lua_kernel::intf_get_unit(), game_lua_kernel::intf_get_units(), game_lua_kernel::intf_match_unit(), game_lua_kernel::intf_put_unit(), lua_map_location::intf_rotate_right_around_center(), lua_map_location::intf_tiles_adjacent(), intf_unit_defense(), intf_unit_jamming_cost(), intf_unit_movement_cost(), intf_unit_vision_cost(), lua_map_location::intf_vector_diff(), lua_map_location::intf_vector_negation(), lua_map_location::intf_vector_sum(), load_fake_units(), lua_check_impl::lua_to_or_default(), luaW_checklocation(), luaW_to_locationset(), and luaW_tofaivariant().

◆ luaW_toscalar()

bool luaW_toscalar ( lua_State *  L,
int  index,
config::attribute_value v 
)

Converts the value at the top of the stack to an attribute value.

Definition at line 583 of file lua_common.cpp.

References utf8::index(), luaW_toboolean(), luaW_tostring(), and tstringKey.

Referenced by luaW_serialize_function(), luaW_toconfig(), and lua_kernel_base::run_binary_lua_tag().

◆ luaW_tostring()

std::string_view luaW_tostring ( lua_State *  L,
int  index 
)

◆ luaW_tostring_or_default()

std::string_view luaW_tostring_or_default ( lua_State *  L,
int  index,
std::string_view  def = std::string_view() 
)

Definition at line 1180 of file lua_common.cpp.

References utf8::index().

Referenced by lua_check_impl::lua_to_or_default().

◆ luaW_totstring()

bool luaW_totstring ( lua_State *  L,
int  index,
t_string str 
)

◆ luaW_tovconfig()

bool luaW_tovconfig ( lua_State *  L,
int  index,
vconfig vcfg 
)

◆ luaW_type_error() [1/2]

int luaW_type_error ( lua_State *  L,
int  narg,
const char *  kpath,
const char *  tname 
)

Definition at line 1283 of file lua_common.cpp.

References wfl::msg().

◆ luaW_type_error() [2/2]

int luaW_type_error ( lua_State *  L,
int  narg,
const char *  tname 
)

◆ operator delete()

void operator delete ( void *  p,
lua_State *  L,
int  nuv 
)

Definition at line 516 of file lua_common.cpp.

◆ operator new()

void* operator new ( std::size_t  sz,
lua_State *  L,
int  nuv = 0 
)

Definition at line 511 of file lua_common.cpp.

◆ operator<<()

std::ostream& operator<< ( std::ostream &  os,
const luaW_PrintStack s 
)

Definition at line 915 of file lua_common.cpp.

References flush(), i, luaW_getglobal(), and s.

◆ push_error_handler()

void push_error_handler ( lua_State *  L)

Definition at line 1197 of file lua_common.cpp.

References executeKey, and luaW_getglobal().

Referenced by lua_kernel_base::lua_kernel_base().