The Battle for Wesnoth 1.21.0-dev
 
Loading...
Searching...
No Matches
Namespaces | Macros | Functions | Variables
function.cpp File Reference
#include "formula/function.hpp"
#include "color.hpp"
#include "formula/callable_objects.hpp"
#include "formula/debugger.hpp"
#include "game_config.hpp"
#include "game_display.hpp"
#include "log.hpp"
#include "pathutils.hpp"
#include "serialization/unicode.hpp"
#include <boost/algorithm/string.hpp>
#include <boost/math/constants/constants.hpp>
#include <cctype>
#include <chrono>
#include <deque>
#include <utility>
Include dependency graph for function.cpp:

Go to the source code of this file.

Namespaces

namespace  wfl
 
namespace  wfl::builtins
 
namespace  wfl::actions
 

Macros

#define DBG_NG   LOG_STREAM(debug, log_engine)
 
#define LOG_SF   LOG_STREAM(info, log_scripting_formula)
 
#define WRN_SF   LOG_STREAM(warn, log_scripting_formula)
 
#define ERR_SF   LOG_STREAM(err, log_scripting_formula)
 

Functions

 wfl::builtins::DEFINE_WFL_FUNCTION (debug, 0, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (dir, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (if, 2, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (switch, 3, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (abs, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (min, 1, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (max, 1, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (debug_float, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (debug_print, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (debug_profile, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (keys, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (values, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (tolist, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (tomap, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (substring, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (replace, 3, 4)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (replace_all, 3, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (starts_with, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (ends_with, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (insert, 3, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (length, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (byte_index, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (concatenate, 1, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (str_upper, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (str_lower, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (sin, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (cos, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (tan, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (asin, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (acos, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (atan, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (sqrt, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (cbrt, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (root, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (log, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (exp, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (pi, 0, 0)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (hypot, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (index_of, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (choose, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (wave, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (lerp, 3, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (lerp_index, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (get_palette, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (clamp, 3, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (sort, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (reverse, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (contains_string, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (find_string, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (filter, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (find, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (map, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (take_while, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (zip, 1, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (reduce, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (sum, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (head, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (tail, 1, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (size, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (null, 0, -1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (ceil, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (round, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (floor, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (trunc, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (frac, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (sgn, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (as_decimal, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (loc, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (pair, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (distance_between, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (nearest_loc, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (adjacent_locs, 1, 1)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (locations_in_radius, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (are_adjacent, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (relative_dir, 2, 2)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (direction_from, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (rotate_loc_around, 2, 3)
 
 wfl::builtins::DEFINE_WFL_FUNCTION (type, 1, 1)
 
 wfl::actions::DEFINE_WFL_FUNCTION (safe_call, 2, 2)
 
 wfl::actions::DEFINE_WFL_FUNCTION (set_var, 2, 2)
 

Variables

static lg::log_domain log_engine ("engine")
 
static lg::log_domain log_scripting_formula ("scripting/formula")
 
static thread_local std::deque< std::string > wfl::call_stack
 For printing error messages when WFL parsing or evaluation fails, this contains the names of the WFL functions being evaluated.
 

Macro Definition Documentation

◆ DBG_NG

#define DBG_NG   LOG_STREAM(debug, log_engine)

Definition at line 37 of file function.cpp.

◆ ERR_SF

#define ERR_SF   LOG_STREAM(err, log_scripting_formula)

Definition at line 41 of file function.cpp.

◆ LOG_SF

#define LOG_SF   LOG_STREAM(info, log_scripting_formula)

Definition at line 39 of file function.cpp.

◆ WRN_SF

#define WRN_SF   LOG_STREAM(warn, log_scripting_formula)

Definition at line 40 of file function.cpp.

Variable Documentation

◆ a_

variant a_
mutableprivate

◆ b_

variant b_
private

◆ expr_

expression_ptr expr_
private

Definition at line 819 of file function.cpp.

◆ fallback_

const formula_callable* fallback_
private

◆ i

std::size_t i

Definition at line 1031 of file function.cpp.

◆ log_engine

lg::log_domain log_engine("engine") ( "engine"  )
static

◆ log_scripting_formula

lg::log_domain log_scripting_formula("scripting/formula") ( "scripting/formula"  )
static