The Battle for Wesnoth  1.19.9+dev
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Friends | List of all members
config Class Reference

A config object defines a single node in a WML file, with access to child nodes. More...

#include <config.hpp>

Classes

struct  all_children_iterator
 
struct  any_child
 
struct  attribute_iterator
 
struct  child_iterator
 
struct  child_pos
 
struct  const_all_children_iterator
 
struct  const_attribute_iterator
 
struct  const_child_iterator
 
struct  error
 

Public Types

typedef std::vector< std::unique_ptr< config > > child_list
 
typedef std::map< std::string, child_list, std::less<> > child_map
 
typedef boost::iterator_range< child_iteratorchild_itors
 
typedef boost::iterator_range< const_child_iteratorconst_child_itors
 
using attribute_value = config_attribute_value
 Variant for storing WML attributes. More...
 
typedef std::map< std::string, attribute_value, std::less<> > attribute_map
 
typedef attribute_map::value_type attribute
 
typedef boost::iterator_range< const_attribute_iteratorconst_attr_itors
 
typedef boost::iterator_range< attribute_iteratorattr_itors
 
typedef boost::iterator_range< all_children_iteratorall_children_itors
 
typedef boost::iterator_range< const_all_children_iteratorconst_all_children_itors
 

Public Member Functions

 config ()
 
 config (const config &)
 
configoperator= (const config &)
 
 config (config &&)
 
configoperator= (config &&)
 
 config (config_key_type child)
 Creates a config object with an empty child of name child. More...
 
template<typename... Args>
 config (config_key_type first, Args &&... args)
 Creates a config with several attributes and children. More...
 
 ~config ()
 
child_itors child_range (config_key_type key)
 
const_child_itors child_range (config_key_type key) const
 
std::size_t child_count (config_key_type key) const
 
std::size_t all_children_count () const
 
std::size_t attribute_count () const
 Count the number of non-blank attributes. More...
 
bool has_child (config_key_type key) const
 Determine whether a config has a child or not. More...
 
const configchild_or_empty (config_key_type key) const
 Returns the first child with the given key, or an empty config if there is none. More...
 
configmandatory_child (config_key_type key, int n=0)
 Returns the nth child with the given key, or throws an error if there is none. More...
 
const configmandatory_child (config_key_type key, int n=0) const
 Returns the nth child with the given key, or throws an error if there is none. More...
 
optional_config_impl< configoptional_child (config_key_type key, int n=0)
 Equivalent to mandatory_child, but returns an empty optional if the nth child was not found. More...
 
optional_config_impl< const configoptional_child (config_key_type key, int n=0) const
 Equivalent to mandatory_child, but returns an empty optional if the nth child was not found. More...
 
configmandatory_child (config_key_type key, const std::string &parent)
 Returns a mandatory child node. More...
 
const configmandatory_child (config_key_type key, const std::string &parent) const
 Returns a mandatory child node. More...
 
optional_config_impl< const configget_deprecated_child (config_key_type old_key, const std::string &in_tag, DEP_LEVEL level, const std::string &message) const
 Get a deprecated child and log a deprecation message. More...
 
const_child_itors get_deprecated_child_range (config_key_type old_key, const std::string &in_tag, DEP_LEVEL level, const std::string &message) const
 Get a deprecated child range and log a deprecation message. More...
 
configadd_child (config_key_type key)
 
configadd_child (config_key_type key, const config &val)
 
configadd_child_at (config_key_type key, const config &val, std::size_t index)
 
configadd_child (config_key_type key, config &&val)
 
attribute_valueoperator[] (config_key_type key)
 Returns a reference to the attribute with the given key. More...
 
const attribute_valueoperator[] (config_key_type key) const
 Returns a reference to the attribute with the given key or to a dummy empty attribute if it does not exist. More...
 
const attribute_valueget (config_key_type key) const
 Returns a pointer to the attribute with the given key or nullptr if it does not exist. More...
 
const attribute_valueget_or (const config_key_type key, const config_key_type default_key) const
 Chooses a value. More...
 
const attribute_valueget_old_attribute (config_key_type key, const std::string &old_key, const std::string &in_tag, const std::string &message="") const
 Function to handle backward compatibility Get the value of key and if missing try old_key and log a deprecation message. More...
 
const attribute_valueget_deprecated_attribute (config_key_type old_key, const std::string &in_tag, DEP_LEVEL level, const std::string &message) const
 Get a deprecated attribute without a direct substitute, and log a deprecation message. More...
 
template<typename T >
void insert (config_key_type key, T &&value)
 Inserts an attribute into the config. More...
 
configchild_or_add (config_key_type key)
 Returns a reference to the first child with the given key. More...
 
bool has_attribute (config_key_type key) const
 
void remove_attribute (config_key_type key)
 
void merge_attributes (const config &)
 
template<typename... T>
void remove_attributes (T... keys)
 
template<typename... T>
void copy_attributes (const config &from, T... keys)
 Copies attributes that exist in the source config. More...
 
template<typename... T>
void copy_or_remove_attributes (const config &from, T... keys)
 Copies or deletes attributes to match the source config. More...
 
const_attr_itors attribute_range () const
 
attr_itors attribute_range ()
 
optional_config_impl< configfind_child (config_key_type key, const std::string &name, const std::string &value)
 Returns the first child of tag key with a name attribute containing value. More...
 
optional_config_impl< const configfind_child (config_key_type key, const std::string &name, const std::string &value) const
 
configfind_mandatory_child (config_key_type key, const std::string &name, const std::string &value)
 
const configfind_mandatory_child (config_key_type key, const std::string &name, const std::string &value) const
 
template<typename... T>
void clear_children (T... keys)
 
void splice_children (config &src, config_key_type key)
 Moves all the children with tag key from src to this. More...
 
void remove_child (config_key_type key, std::size_t index)
 
void remove_children (config_key_type key, const std::function< bool(const config &)> &p={})
 Removes all children with tag key for which p returns true. More...
 
void recursive_clear_value (config_key_type key)
 
void clear ()
 
void clear_all_children ()
 
void clear_attributes ()
 
bool empty () const
 
std::string debug () const
 
std::string hash () const
 
configadd_child_at_total (config_key_type key, const config &val, std::size_t pos)
 
std::size_t find_total_first_of (config_key_type key, std::size_t start=0)
 
const_all_children_itors all_children_range () const
 In-order iteration over all children. More...
 
all_children_itors all_children_range ()
 
const_all_children_iterator ordered_cbegin () const
 
const_all_children_iterator ordered_cend () const
 
const_all_children_iterator ordered_begin () const
 
const_all_children_iterator ordered_end () const
 
all_children_iterator ordered_begin ()
 
all_children_iterator ordered_end ()
 
all_children_iterator erase (const all_children_iterator &i)
 
auto all_children_view () const
 In-order iteration over all children. More...
 
auto all_children_view ()
 In-order iteration over all children. More...
 
config get_diff (const config &c) const
 A function to get the differences between this object, and 'c', as another config object. More...
 
void get_diff (const config &c, config &res) const
 
void apply_diff (const config &diff, bool track=false)
 A function to apply a diff config onto this config object. More...
 
void clear_diff_track (const config &diff)
 Clear any tracking info from a previous apply_diff call with tracking. More...
 
void merge_with (const config &c)
 Merge config 'c' into this config, overwriting this config's values. More...
 
void inherit_from (const config &c)
 Merge config 'c' into this config, preserving this config's values. More...
 
void inherit_attributes (const config &c)
 Merge the attributes of config 'c' into this config, preserving this config's values. More...
 
bool matches (const config &filter) const
 
void append (const config &cfg)
 Append data from another config object to this one. More...
 
void append (config &&cfg)
 
void append_children (const config &cfg)
 Adds children from cfg. More...
 
void append_children (const config &cfg, config_key_type key)
 Adds children from cfg. More...
 
void append_children_by_move (config &cfg, config_key_type key)
 Moves children with the given name from the given config to this one. More...
 
void append_attributes (const config &cfg)
 Adds attributes from cfg. More...
 
void merge_children (config_key_type key)
 All children with the given key will be merged into the first element with that key. More...
 
void merge_children_by_attribute (config_key_type key, config_key_type attribute)
 All children with the given key and with equal values of the specified attribute will be merged into the element with that key and that value of the attribute. More...
 
void swap (config &cfg)
 
bool validate_wml () const
 Returns true if this object represents valid WML, i.e. More...
 
auto child_name_view () const
 A non-owning view over all child tag names. More...
 

Static Public Member Functions

static bool valid_tag (config_key_type name)
 
static bool valid_attribute (config_key_type name)
 

Static Public Attributes

static const char * diff_track_attribute = "__diff_track"
 The name of the attribute used for tracking diff changes. More...
 

Private Member Functions

void clear_children_impl (config_key_type key)
 
std::vector< child_pos >::iterator remove_child (const child_map::iterator &l, std::size_t pos)
 Removes the child at position pos of l. More...
 

Static Private Member Functions

template<typename Res >
static auto any_tag_view (const child_pos &elem) -> std::pair< const child_map::key_type &, Res >
 

Private Attributes

attribute_map values_
 All the attributes of this node. More...
 
child_map children_
 A list of all children of this node. More...
 
std::vector< child_posordered_children
 

Friends

bool operator== (const config &a, const config &b)
 

Detailed Description

A config object defines a single node in a WML file, with access to child nodes.

Definition at line 157 of file config.hpp.

Member Typedef Documentation

◆ all_children_itors

typedef boost::iterator_range<all_children_iterator> config::all_children_itors

Definition at line 762 of file config.hpp.

◆ attr_itors

typedef boost::iterator_range<attribute_iterator> config::attr_itors

Definition at line 359 of file config.hpp.

◆ attribute

typedef attribute_map::value_type config::attribute

Definition at line 298 of file config.hpp.

◆ attribute_map

typedef std::map< std::string , attribute_value , std::less<> > config::attribute_map

Definition at line 297 of file config.hpp.

◆ attribute_value

Variant for storing WML attributes.

The most efficient type is used when assigning a value. For instance, strings "yes", "no", "true", "false" will be detected and stored as boolean.

Note
The blank variant is only used when querying missing attributes. It is not stored in config objects.

Definition at line 291 of file config.hpp.

◆ child_itors

typedef boost::iterator_range<child_iterator> config::child_itors

Definition at line 281 of file config.hpp.

◆ child_list

typedef std::vector<std::unique_ptr<config> > config::child_list

Definition at line 191 of file config.hpp.

◆ child_map

typedef std::map<std::string, child_list, std::less<> > config::child_map

Definition at line 192 of file config.hpp.

◆ const_all_children_itors

Definition at line 763 of file config.hpp.

◆ const_attr_itors

typedef boost::iterator_range<const_attribute_iterator> config::const_attr_itors

Definition at line 358 of file config.hpp.

◆ const_child_itors

typedef boost::iterator_range<const_child_iterator> config::const_child_itors

Definition at line 282 of file config.hpp.

Constructor & Destructor Documentation

◆ config() [1/5]

config::config ( )

Definition at line 76 of file config.cpp.

Referenced by add_child().

◆ config() [2/5]

config::config ( const config cfg)

Definition at line 83 of file config.cpp.

References append_children().

◆ config() [3/5]

config::config ( config &&  cfg)

Definition at line 115 of file config.cpp.

◆ config() [4/5]

config::config ( config_key_type  child)
explicit

Creates a config object with an empty child of name child.

Definition at line 91 of file config.cpp.

References add_child().

◆ config() [5/5]

template<typename... Args>
config::config ( config_key_type  first,
Args &&...  args 
)
inlineexplicit

Creates a config with several attributes and children.

Pass the keys/tags and values/children alternately. For example: config("key", 42, "value", config())

Definition at line 948 of file config.hpp.

References detail::config_construct_unpack().

◆ ~config()

config::~config ( )

Definition at line 99 of file config.cpp.

References clear().

Member Function Documentation

◆ add_child() [1/3]

config & config::add_child ( config_key_type  key)

Definition at line 436 of file config.cpp.

References children_, config(), and ordered_children.

Referenced by unit_animation::add_anims(), gui2::rich_label::add_attribute(), add_child_at_total(), replay::add_countdown_update(), game_events::manager::add_event_handler_from_wml(), add_image(), replay::add_label(), campaignd::add_license(), replay::add_log_data(), unit::add_modification(), terrain_builder::add_off_map_rule(), replay::add_rename(), replay::add_start(), replay::add_surrender(), schema_validation::wml_tag::add_switch(), replay::add_synced_command(), add_text(), replay::add_unit_checksum(), desktop::add_user_bookmark(), append(), append_children(), append_children_by_move(), unit::apply_builtin_effect(), attack_type::apply_modification(), archive_addon(), archive_dir(), BOOST_AUTO_TEST_CASE(), unit_type::build_help_index(), cave_map_generator::cave_map_generator_job::cave_map_generator_job(), saved_game::check_require_scenario(), child_or_add(), replay::clear_labels(), persist_file_context::clear_var(), config(), detail::config_construct_unpack(), savegame::convert_old_saves_1_11_0(), savegame::convert_old_saves_1_13_0(), editor::map_context::convert_scenario(), gui2::dialogs::editor_edit_pbl::create_cfg(), default_map_generator::create_scenario(), savegame::save_index_class::data(), addons_client::delete_remote_addon(), gui2::dialogs::story_viewer::display_part(), prefs::do_commit_editor_mru(), events::chat_command_handler::do_info(), do_resolve_rects(), addons_client::download_addon(), gui2::dialogs::attack_predictions::draw_hp_graph(), replay::end_turn(), gui2::dialogs::mp_lobby::enter_game(), expand_partialresolution(), ai::configuration::expand_simplified_aspects(), savegame::extract_summary_from_config(), help::generate_contents(), unit::generate_traits(), addons_client::get_addon_admins(), addons_client::get_addon_count_by_type(), addons_client::get_addon_downloads_by_version(), replay_helper::get_attack(), ai::readonly_context_impl::get_avoid(), get_checksum(), variable_info_implementation::vi_policy_create::get_child_at(), get_diff(), replay_helper::get_event(), addons_client::get_forum_auth_usage(), addons_client::get_hidden_addons(), gui2::dialogs::mp_options_helper::get_options_config(), vconfig::get_parsed_config(), gui2::rich_label::get_parsed_text(), replay_helper::get_recall(), replay_helper::get_recruit(), replay::get_unsent_commands(), persist_file_context::get_var(), campaignd::server::handle_list_hidden(), campaignd::server::handle_request_campaign_list(), campaignd::server::handle_upload(), addons_client::hide_addon(), inherit_scenario(), unit::init(), replay::init_side(), ai::default_recruitment::recruitment::integrate_recruitment_pattern_in_recruitment_instructions(), intf_append_ai(), intf_debug_ai(), game_lua_kernel::intf_get_achievement(), intf_invoke_synced_command(), intf_modify_ai(), editor::editor_display::layout(), gui2::dialogs::addon_manager::load_addon_list(), game_config_manager::load_game_config(), saved_game::load_non_scenario(), synced_checkup::local_checkup(), luaW_serialize_function(), luaW_toconfig(), wb::side_actions::make_net_cmd_insert(), wb::side_actions::make_net_cmd_refresh(), wb::side_actions::make_net_cmd_replace(), make_updatepack(), ng::depcheck::manager::manager(), animation_branch::merge(), merge_children(), merge_children_by_attribute(), merge_with(), variable_info_implementation::merge_range_h::operator()(), ai::configuration::parse_side_config(), markup::parse_tag_contents(), markup::parse_text(), markup::parse_text_until(), cave_map_generator::cave_map_generator_job::place_chamber(), saved_game::post_scenario_generation(), ai::ai_composite::preparse_cfg(), ng::connect_engine::process_network_data(), playmp_controller::process_oos(), prefs::progress_achievement(), persist_choice::query_user(), playturn_network_adapter::read(), ai::default_recruitment::recruitment_aspect::recalculate(), ai::default_recruitment::recruitment_aspect::recruitment_aspect(), display::refresh_report(), addons_client::request_addons_list(), gui2::dialogs::mp_match_history::request_history(), lua_kernel_base::run_binary_lua_tag(), hotkey::save_hotkeys(), editor::map_context::save_schedule(), gui2::dialogs::editor_edit_unit::save_unit_type(), playmp_controller::send_change_side_controller(), ng::connect_engine::send_level_data(), wb::manager::send_network_data(), addons_client::send_simple_request(), game_events::filter_condition::serialize(), game_events::filter_side::serialize(), game_events::filter_unit::serialize(), game_events::filter_attack::serialize(), game_events::filter_dynamic::serialize(), lua_event_filter::serialize(), about::set_about(), prefs::set_achievement(), prefs::set_child(), set_global_variable(), game_config_manager::set_multiplayer_hashes(), ng::scenario::set_sides(), prefs::set_sub_achievement(), prefs::set_user_servers_list(), persist_file_context::set_var(), setup_test_config(), gui2::dialogs::mp_join_game::show_flg_select(), ng::side_engine::side_engine(), replay::speak(), scoped_wml_variable::store(), campaignd::support_translation(), carryover_info::to_config(), editor::map_context::to_config(), ai::ai_composite::to_config(), ai::composite_aspect< T >::to_config(), ai::lua_aspect< T >::to_config(), ai::candidate_action::to_config(), ai::ai_default_rca::aspect_attacks::to_config(), ai::aspect_attacks_lua::to_config(), ai::ai_default_rca::candidate_action_evaluation_loop::to_config(), ai::formula_ai::to_config(), ai::engine_fai::to_config(), ai::lua_candidate_action_wrapper_base::to_config(), ai::lua_stage_wrapper::to_config(), ai::engine_lua::to_config(), mp_game_settings::to_config(), pathfind::manager::to_config(), play_controller::to_config(), saved_game::to_config(), statistics_record::campaign_stats_t::to_config(), team::to_config(), wb::attack::to_config(), wb::move::to_config(), wb::recall::to_config(), wb::recruit::to_config(), wb::suppose_dead::to_config(), carryover::to_config(), game_events::wml_menu_item::to_config(), game_events::wmi_manager::to_config(), tod_manager::to_config(), ai::readonly_context_impl::to_readonly_context_config(), carryover::transfer_all_recalls_to(), addons_client::unhide_addon(), ng::connect_engine::update_and_send_diff(), addons_client::upload_addon(), replay::user_input(), ai::config_value_translator< config >::value_to_cfg(), ai::config_value_translator< terrain_filter >::value_to_cfg(), wesnothd::ban_manager::write(), statistics_record::stats_t::write(), statistics_record::scenario_stats_t::write(), mp_game_settings::addon_version_info::write(), actions::undo_action_container::write(), unit_formula_manager::write(), actions::shroud_clearing_action::write(), actions::undo_list::write(), actions::undo_event::write(), actions::undo::dismiss_action::write(), actions::undo::recall_action::write(), actions::undo::recruit_action::write(), actions::clearer_info::write(), addon_info::write(), display::write(), game_state::write(), team::team_info::write(), team::write(), attack_type::write(), movetype::write(), unit::write(), replay_recorder_base::write(), movetype::terrain_info::data::write(), movetype::resistances::write(), sound::music_track::write(), map_labels::write(), write_addon_install_info(), statistics_record::write_battle_result_map(), statistics_record::write_by_cth_map(), game_board::write_config(), game_events::event_handler::write_config(), write_difference(), game_events::manager::write_events(), write_hashlist(), prefs::write_preferences(), game_data::write_snapshot(), soundsource::manager::write_sourcespecs(), and prefs::~prefs().

◆ add_child() [2/3]

config & config::add_child ( config_key_type  key,
config &&  val 
)

Definition at line 455 of file config.cpp.

References children_, config(), and ordered_children.

◆ add_child() [3/3]

config & config::add_child ( config_key_type  key,
const config val 
)

Definition at line 445 of file config.cpp.

References children_, config(), and ordered_children.

◆ add_child_at()

config & config::add_child_at ( config_key_type  key,
const config val,
std::size_t  index 
)
Parameters
keythe tag name
valthe contents of the tag
indexis the index of the new child within all children of type key.

Definition at line 465 of file config.cpp.

References children_, utf8::index(), ordered_children, and config::child_pos::pos.

Referenced by unit_animation::add_anims(), apply_diff(), ng::depcheck::manager::insert_element(), ng::side_engine::new_config(), variable_info_implementation::replace_range_h::operator()(), ai::configuration::parse_side_config(), and display::refresh_report().

◆ add_child_at_total()

config & config::add_child_at_total ( config_key_type  key,
const config val,
std::size_t  pos 
)
Parameters
keythe tag name
valthe contents of the tag
posis the index of the new child in all children.

Definition at line 512 of file config.cpp.

References add_child(), utf8::index(), ordered_children, and p.

Referenced by saved_game::load_non_scenario().

◆ all_children_count()

std::size_t config::all_children_count ( ) const

◆ all_children_range() [1/2]

config::all_children_itors config::all_children_range ( )

Definition at line 898 of file config.cpp.

References ordered_children.

◆ all_children_range() [2/2]

config::const_all_children_itors config::all_children_range ( ) const

In-order iteration over all children.

Definition at line 880 of file config.cpp.

References ordered_children.

Referenced by find_ref(), and play_controller::init().

◆ all_children_view() [1/2]

auto config::all_children_view ( )
inline

In-order iteration over all children.

Definition at line 800 of file config.hpp.

References ordered_children, and utils::views::transform.

◆ all_children_view() [2/2]

auto config::all_children_view ( ) const
inline

◆ any_tag_view()

template<typename Res >
static auto config::any_tag_view ( const child_pos elem) -> std::pair<const child_map::key_type&, Res>
inlinestaticprivate

Definition at line 779 of file config.hpp.

◆ append() [1/2]

void config::append ( config &&  cfg)

Definition at line 196 of file config.cpp.

References add_child(), children_, ordered_children, and values_.

◆ append() [2/2]

void config::append ( const config cfg)

◆ append_attributes()

void config::append_attributes ( const config cfg)

◆ append_children() [1/2]

void config::append_children ( const config cfg)

◆ append_children() [2/2]

void config::append_children ( const config cfg,
config_key_type  key 
)

Adds children from cfg.

Definition at line 181 of file config.cpp.

References add_child(), and child_range().

◆ append_children_by_move()

void config::append_children_by_move ( config cfg,
config_key_type  key 
)

Moves children with the given name from the given config to this one.

Definition at line 224 of file config.cpp.

References add_child(), child_range(), and clear_children_impl().

Referenced by game_config_manager::load_addons_cfg(), and saved_game::set_defaults().

◆ apply_diff()

void config::apply_diff ( const config diff,
bool  track = false 
)

A function to apply a diff config onto this config object.

If the "track" parameter is true, the changes made will be marked in a magic attribute (defined above) of this and child nodes of this config, with "new" value indicating an added child, "modified" a modified one, and "deleted" for the deleted items, which will not be actually deleted (so calling code can easily see what they are). Use clear_diff_track with the same diff object to clear the tracking info and actually delete the nodes.

Definition at line 1022 of file config.cpp.

References add_child_at(), child_range(), children_, diff_track_attribute, i, utf8::index(), optional_child(), remove_child(), and values_.

Referenced by lua_wml::intf_wml_patch(), gui2::dialogs::mp_join_game::network_handler(), process_command_args(), and mp::lobby_info::process_gamelist_diff_impl().

◆ attribute_count()

std::size_t config::attribute_count ( ) const

Count the number of non-blank attributes.

Definition at line 307 of file config.cpp.

References values_.

Referenced by impl_unit_variables_dir(), markup::parse_tag(), markup::parse_tag_contents(), and gui2::dialogs::editor_edit_unit::update_wml_view().

◆ attribute_range() [1/2]

config::attr_itors config::attribute_range ( )

Definition at line 768 of file config.cpp.

References values_.

◆ attribute_range() [2/2]

config::const_attr_itors config::attribute_range ( ) const

◆ child_count()

std::size_t config::child_count ( config_key_type  key) const

◆ child_name_view()

auto config::child_name_view ( ) const
inline

A non-owning view over all child tag names.

Definition at line 904 of file config.hpp.

References children_, and utils::views::keys.

Referenced by game_lua_kernel::save_game().

◆ child_or_add()

config & config::child_or_add ( config_key_type  key)

Returns a reference to the first child with the given key.

Creates the child if it does not yet exist.

Definition at line 401 of file config.cpp.

References add_child(), children_, and i.

Referenced by prefs::add_alias(), replay::add_log_data(), persist_file_context::clear_var(), saved_game::expand_mp_options(), persist_context::get_node(), intf_invoke_synced_command(), ng::side_engine::new_config(), persist_file_context::set_var(), and carryover::transfer_all_gold_to().

◆ child_or_empty()

const config & config::child_or_empty ( config_key_type  key) const

◆ child_range() [1/2]

config::child_itors config::child_range ( config_key_type  key)

Definition at line 268 of file config.cpp.

References children_, dummy, i, and p.

Referenced by unit::ability_active_impl(), unit::ability_affects_adjacent(), about::credits_group::about_group::about_group(), achievement::achievement(), prefs::achievement(), achievement_group::achievement_group(), game_classification::active_addons(), unit_animation::add_anims(), gui2::dialogs::campaign_selection::add_campaign_to_tree(), replay::add_config(), schema_validation::wml_tag::add_filter(), terrain_builder::add_images_from_config(), unit::add_modification(), theme::add_object(), schema_validation::wml_tag::add_switch(), mp_game_settings::addon_version_info::addon_version_info(), gui2::dialogs::addon_server_info::admin_delete_addon(), gui2::dialogs::addon_server_info::admin_hide_addon(), gui2::dialogs::addon_server_info::admin_list_hidden(), gui2::dialogs::addon_server_info::admin_unhide_addon(), unit::advance_to(), ai::holder::append_ai(), append_children(), append_children_by_move(), unit::apply_builtin_effect(), apply_diff(), unit_type::apply_scenario_fix(), editor::brush::brush(), team::build(), unit_type::build_help_index(), gui2::implementation::builder_combobox::builder_combobox(), gui2::builder_grid::builder_grid(), gui2::implementation::builder_menu_button::builder_menu_button(), gui2::implementation::builder_multi_page::builder_multi_page(), gui2::implementation::builder_multimenu_button::builder_multimenu_button(), gui2::implementation::builder_stacked_widget::builder_stacked_widget(), gui2::implementation::builder_tab_container::builder_tab_container(), gui2::implementation::builder_tree_view::builder_tree_view(), saved_game::cancel_orders(), carryover::carryover(), carryover_info::carryover_info(), ng::depcheck::manager::change_era(), ng::depcheck::manager::change_modifications(), ng::depcheck::manager::change_scenario(), vconfig::child(), game_config_view::child_range(), clear_diff_track(), ai::composite_aspect< T >::composite_aspect(), ng::connect_engine::connect_engine(), contains_hashlist(), savegame::convert_old_saves_1_11_0(), savegame::convert_old_saves_1_13_1(), count_pack_files(), about::credits_group::credits_group(), campaignd::data_apply_addlist(), campaignd::data_apply_removelist(), default_map_generator_job::default_generate_map(), gui2::dialogs::mp_options_helper::display_custom_options(), gui2::dialogs::game_load::display_savegame_internal(), events::console_handler::do_choose_level(), do_gameloop(), prefs::do_read_editor_mru(), display::draw_report(), unit_type::events(), gui2::dialogs::sp_options_configure::execute(), wb::side_actions::execute_net_cmd(), ng::depcheck::manager::exists(), saved_game::expand_mp_options(), ai::configuration::expand_simplified_aspects(), savegame::extract_summary_from_config(), gui2::dialogs::mp_join_game::fetch_game_config(), find_next_scenarios(), campaignd::find_translations(), savegame::save_index_class::fix_leader_image_path(), schema_validation::wml_type::from_config(), mp::game_info::game_info(), cave_map_generator::cave_map_generator_job::generate_chambers(), help::generate_contents(), help::generate_faction_topics(), gui2::dialogs::mp_join_game::generate_side_list(), unit::generate_traits(), help::generate_weapon_special_topics(), unit::get_abilities(), unit::get_ability_bool(), get_checksum(), ng::depcheck::manager::get_era_index(), unit::get_modifications_list(), ai::default_recruitment::recruitment::get_most_important_job(), gui2::dialogs::addon_manager::get_name_filter_visibility(), gui2::rich_label::get_parsed_text(), get_resolution(), ng::depcheck::manager::get_scenario_index(), ng::side_engine::get_side_children(), wfl::config_callable::get_value(), campaignd::get_version_map(), gui2::gui_definition::gui_definition(), campaignd::server::handle_request_campaign(), campaignd::server::handle_request_campaign_list(), campaignd::server::handle_upload(), unit::has_ability_type(), vconfig::has_child(), impl_music_get(), inherit_scenario(), gui2::init(), unit::init(), ai::configuration::init(), ai::holder::init(), editor::editor_controller::init_music(), editor::editor_controller::init_tods(), game_lua_kernel::initialize(), gui2::dialogs::preferences_dialog::initialize_callbacks(), intf_remove_modifications(), replay_recorder_base::is_ancestor(), team_builder::leader(), gui2::tip_of_the_day::load(), campaignd::server::load_config(), wesnothd::server::load_config(), wesnothd::ban_manager::load_config(), savegame::loadgame::load_game(), game_config_manager::load_game_config(), load_language_list(), saved_game::load_non_scenario(), prefs::load_preferences(), gui2::styled_widget_definition::load_resolutions(), editor::map_context::load_scenario(), ng::campaign::mark_if_completed(), matches(), movetype::merge(), merge_children(), merge_children_by_attribute(), game_config_view::merged_children_view(), unit::modification_count(), theme::modify(), wb::move::move(), movetype::movetype(), mp_game_settings::mp_game_settings(), unit_type::musthave_status(), ng::side_engine::new_config(), ai::ai_composite::on_create(), ai::ai_default_rca::candidate_action_evaluation_loop::on_create(), ai::formula_ai::on_create(), ai::readonly_context_impl::on_readonly_context_create(), gui2::parse_linked_group_definitions(), ai::configuration::parse_side_config(), time_of_day::parse_times(), unit_animation::particle::particle(), play_controller::play_controller(), unit_type::possible_traits(), saved_game::post_scenario_generation(), gui2::dialogs::mp_create_game::post_show(), gui2::dialogs::campaign_difficulty::pre_show(), gui2::dialogs::editor_edit_pbl::pre_show(), gui2::dialogs::unit_advance::pre_show(), prefs::prefs(), prepare_animation(), team_builder::prepare_units(), achievements::process_achievements_file(), mp::lobby_info::process_gamelist(), mp::lobby_info::process_gamelist_diff_impl(), wb::manager::process_network_data(), mp::lobby_info::process_userlist(), prefs::progress_achievement(), purge_dir(), wesnothd::ban_manager::read(), preproc_define::read(), actions::undo_action_container::read(), addon_info::read(), gui2::builder_window::read(), map_labels::read(), statistics_record::campaign_stats_t::read(), actions::undo_list::read(), read_addons_list(), statistics_record::read_battle_result_map(), statistics_record::read_by_cth_map(), schema_validation::schema_validator::read_config_file(), game_events::manager::read_scenario(), ai::default_recruitment::recruitment_aspect::recruitment_aspect(), replay::redo(), unit_type::remove_scenario_fixes(), unit_type::resistance_against(), gui2::toggle_button_definition::resolution::resolution(), gui2::toggle_panel_definition::resolution::resolution(), editor::map_context::save_schedule(), statistics_record::scenario_stats_t::scenario_stats_t(), help::section_is_referenced(), prefs::set_achievement(), saved_game::set_data(), saved_game::set_defaults(), game_events::wmi_manager::set_menu_items(), theme::set_resolution(), ng::scenario::set_sides(), prefs::set_sub_achievement(), editor::item_palette::setup(), show_deprecated_warnings(), attack_type::special_active_impl(), gui2::styled_widget_definition::styled_widget_definition(), prefs::sub_achievement(), editor::map_context::to_config(), help::topic_is_referenced(), saved_game::unify_controllers(), unit_animation::unit_animation(), gui2::dialogs::mp_match_history::update_display(), gui2::dialogs::mp_options_helper::update_options_data_map_menu_button(), desktop::user_bookmarks(), prefs::user_servers_list(), verify(), schema_validation::wml_tag::wml_tag(), write_difference(), prefs::write_preferences(), and scoped_wml_variable::~scoped_wml_variable().

◆ child_range() [2/2]

config::const_child_itors config::child_range ( config_key_type  key) const

Definition at line 280 of file config.cpp.

References children_, dummy, i, and p.

◆ clear()

void config::clear ( )

◆ clear_all_children()

void config::clear_all_children ( )

Definition at line 832 of file config.cpp.

References children_, and ordered_children.

◆ clear_attributes()

void config::clear_attributes ( )

Definition at line 839 of file config.cpp.

References values_.

◆ clear_children()

template<typename... T>
void config::clear_children ( T...  keys)
inline

◆ clear_children_impl()

void config::clear_children_impl ( config_key_type  key)
private

◆ clear_diff_track()

void config::clear_diff_track ( const config diff)

Clear any tracking info from a previous apply_diff call with tracking.

This also removes the nodes that are to be deleted, in effect making apply_diff(c, true); clear_diff_tracking(c); equivalent to apply_diff(c, false);

Definition at line 1083 of file config.cpp.

References child_range(), children_, diff_track_attribute, i, utf8::index(), p, remove_attribute(), and remove_child().

Referenced by mp::lobby_info::process_gamelist_diff_impl().

◆ copy_attributes()

template<typename... T>
void config::copy_attributes ( const config from,
T...  keys 
)
inline

Copies attributes that exist in the source config.

Parameters
fromSource config to copy attributes from.
keysAttribute names.

Definition at line 546 of file config.hpp.

References get(), and utils::views::keys.

◆ copy_or_remove_attributes()

template<typename... T>
void config::copy_or_remove_attributes ( const config from,
T...  keys 
)
inline

Copies or deletes attributes to match the source config.

Attributes that do not exist in the source are fully erased rather than set to the unspecified/default attribute value.

Parameters
fromSource config to copy attributes from.
keysAttribute names.

Definition at line 566 of file config.hpp.

References has_attribute(), utils::views::keys, and remove_attribute().

Referenced by campaignd::server::handle_upload().

◆ debug()

std::string config::debug ( ) const

◆ empty()

bool config::empty ( ) const

Definition at line 845 of file config.cpp.

References children_, and values_.

Referenced by unit_animation::add_anims(), ng::campaign::can_launch_game(), saved_game::check_require_scenario(), persist_file_context::clear_var(), prefs::confirm_no_moves(), ng::connect_engine::connect_engine(), savegame::convert_old_saves_1_11_0(), savegame::convert_old_saves_1_13_0(), default_map_generator_job::default_generate_map(), gui2::dialogs::story_viewer::display_part(), gui2::dialogs::game_load::display_savegame_internal(), unit_abilities::effect::effect(), game_events::event_handler::empty(), movetype::terrain_info::data::empty(), unit_filter::empty(), vconfig::empty(), gui2::dialogs::mp_lobby::enter_game(), unit_filter_impl::unit_filter_compound::fill(), game_events::wml_menu_item::finish_handler(), campaignd::format_addon_feedback_url(), gui2::dialogs::generate_difficulty_config(), prefs::get(), get_heal_sound(), saved_game::get_replay_starting_point(), saved_game::get_scenario_id(), ai::lua_ai_action_handler::handle(), campaignd::server::handle_request_campaign(), campaignd::server::handle_request_campaign_list(), unit::init(), game_events::wml_menu_item::init_handler(), game_lua_kernel::initialize(), installed_addons_and_versions(), lua_gui2::intf_show_recall_dialog(), lua_gui2::intf_show_recruit_dialog(), game_config_manager::load_addons_cfg(), campaignd::server::load_config(), wesnothd::server::load_config(), game_config_manager::load_game_config_with_loadscreen(), synced_checkup::local_checkup(), ignored_checkup::local_checkup(), mp_debug_checkup::local_checkup(), luaW_serialize_function(), schema_validation::wml_condition::matches(), ng::side_engine::new_config(), ai::configuration::parse_side_config(), unit_animation::particle::particle(), playsingle_controller::play_scenario(), playsingle_controller::play_scenario_init(), gui2::dialogs::mp_create_game::post_show(), gui2::dialogs::faction_select::pre_show(), playmp_controller::process_network_change_controller_impl(), playturn_network_adapter::read_from_network(), savegame::read_save_file(), refresh_addon_version_info_cache(), display::refresh_report(), persist_file_context::save_context(), wb::manager::send_network_data(), about::set_about(), lua_gui2::show_message_dialog(), ai::lua_aspect< T >::to_config(), ai::aspect_attacks_lua::to_config(), saved_game::to_config(), game_events::wml_menu_item::to_config(), carryover_info::transfer_all_to(), ng::connect_engine::update_and_send_diff(), game_events::wml_menu_item::update_command(), gui2::dialogs::mp_create_game::update_details(), gui2::dialogs::editor_edit_unit::update_wml_view(), hotkey::wml_hotkey_record::wml_hotkey_record(), team::team_info::write(), time_of_day::write(), movetype::terrain_info::data::write(), saved_game::write_config(), and game_events::manager::write_events().

◆ erase()

◆ find_child() [1/2]

optional_config config::find_child ( config_key_type  key,
const std::string &  name,
const std::string &  value 
)

◆ find_child() [2/2]

optional_config_impl<const config> config::find_child ( config_key_type  key,
const std::string &  name,
const std::string &  value 
) const
inline

Definition at line 587 of file config.hpp.

References find_child().

◆ find_mandatory_child() [1/2]

config & config::find_mandatory_child ( config_key_type  key,
const std::string &  name,
const std::string &  value 
)

◆ find_mandatory_child() [2/2]

const config & config::find_mandatory_child ( config_key_type  key,
const std::string &  name,
const std::string &  value 
) const

Definition at line 815 of file config.cpp.

References find_child().

◆ find_total_first_of()

size_t config::find_total_first_of ( config_key_type  key,
std::size_t  start = 0 
)

◆ get()

const config::attribute_value * config::get ( config_key_type  key) const

◆ get_deprecated_attribute()

const config::attribute_value & config::get_deprecated_attribute ( config_key_type  old_key,
const std::string &  in_tag,
DEP_LEVEL  level,
const std::string &  message 
) const

Get a deprecated attribute without a direct substitute, and log a deprecation message.

Parameters
old_keyThe deprecated attribute to return if present
in_tagThe name of the tag this attribute appears in
levelThe deprecation level
messageAn explanation of the deprecation, possibly mentioning an alternative

Definition at line 726 of file config.cpp.

References deprecated_message(), i, game_config::images::level, and values_.

◆ get_deprecated_child()

optional_config_impl< const config > config::get_deprecated_child ( config_key_type  old_key,
const std::string &  in_tag,
DEP_LEVEL  level,
const std::string &  message 
) const

Get a deprecated child and log a deprecation message.

Parameters
old_keyThe deprecated child to return if present
in_tagThe name of the tag this child appears in
levelThe deprecation level
messageAn explanation of the deprecation, possibly mentioning an alternative
Note
The deprecation message will be a level 3 deprecation.

Definition at line 411 of file config.cpp.

References deprecated_message(), game_config::images::level, and optional_child().

◆ get_deprecated_child_range()

config::const_child_itors config::get_deprecated_child_range ( config_key_type  old_key,
const std::string &  in_tag,
DEP_LEVEL  level,
const std::string &  message 
) const

Get a deprecated child range and log a deprecation message.

Parameters
old_keyThe deprecated child to return if present
in_tagThe name of the tag this child appears in
levelThe deprecation level
messageAn explanation of the deprecation, possibly mentioning an alternative
Note
The deprecation message will be a level 3 deprecation.

Definition at line 422 of file config.cpp.

References children_, deprecated_message(), dummy, i, game_config::images::level, and p.

◆ get_diff() [1/2]

config config::get_diff ( const config c) const

A function to get the differences between this object, and 'c', as another config object.

I.e. calling cfg2.apply_diff(cfg1.get_diff(cfg2)) will make cfg2 identical to cfg1.

Definition at line 906 of file config.cpp.

References c.

Referenced by get_diff(), lua_wml::intf_wml_diff(), process_command_args(), and ng::connect_engine::update_and_send_diff().

◆ get_diff() [2/2]

void config::get_diff ( const config c,
config res 
) const

Definition at line 913 of file config.cpp.

References add_child(), b, c, children_, dummy, get_diff(), and values_.

◆ get_old_attribute()

const config::attribute_value & config::get_old_attribute ( config_key_type  key,
const std::string &  old_key,
const std::string &  in_tag,
const std::string &  message = "" 
) const

Function to handle backward compatibility Get the value of key and if missing try old_key and log a deprecation message.

Parameters
keyThe non-deprecated attribute to return
old_keyThe deprecated attribute to return if key is missing
in_tagThe name of the tag these attributes appear in
messageAn explanation of the deprecation, to be output if old_key is present.
Note
The deprecation message will be a level 1 deprecation.

Definition at line 704 of file config.cpp.

References deprecated_message(), has_attribute(), i, INDEFINITE, wfl::msg(), and values_.

Referenced by default_map_generator_job::default_generate_map().

◆ get_or()

const config::attribute_value & config::get_or ( const config_key_type  key,
const config_key_type  default_key 
) const

Chooses a value.

If the value specified by key is blank, then default_key is chosen instead. If both values are blank or not set, then an empty value is returned.

Definition at line 687 of file config.cpp.

References config_attribute_value::blank(), and operator[]().

Referenced by gender_value(), attack_type::special_tooltips(), and attack_type::weapon_specials().

◆ has_attribute()

bool config::has_attribute ( config_key_type  key) const

Definition at line 157 of file config.cpp.

Referenced by name_generator_factory::add_name_generator_from_config(), ai::aspect_attacks_lua::aspect_attacks_lua(), storyscreen::background_layer::background_layer(), utils::config_filters::bool_or_empty(), gui2::implementation::builder_addon_list::builder_addon_list(), ng::campaign::campaign(), mp::game_info::check_addon_version_compatibility(), persist_file_context::clear_var(), copy_or_remove_attributes(), default_map_generator_job::default_generate_map(), ai::engine_lua::do_parse_candidate_action_from_config(), ng::depcheck::manager::does_conflict(), utils::config_filters::double_matches_if_present(), unit_abilities::effect::effect(), ai::configuration::expand_simplified_aspects(), gui2::dialogs::mp_join_game::fetch_game_config(), unit_creator::find_location(), frame_builder::frame_builder(), schema_validation::wml_type::from_config(), get_addon_tracking_info(), ai::engine_lua::get_engine_code(), get_old_attribute(), wfl::config_callable::get_value(), ai::vector_property_handler< T >::handle_change(), ai::aspect_property_handler< T >::handle_change(), team::team_info::handle_legacy_share_vision(), vconfig::has_attribute(), unit::init(), utils::config_filters::int_matches_if_present(), utils::config_filters::int_matches_if_present_or_negative(), intf_default_generate(), intf_default_generate_height_map(), theme::label::label(), ai::lua_aspect< T >::lua_aspect(), ai::lua_candidate_action_wrapper_external::lua_candidate_action_wrapper_external(), ai::lua_goal::lua_goal(), lua_map_generator::lua_map_generator(), prefs::migrate_preferences(), ng::side_engine::new_config(), ai::target_location_goal::on_create(), markup::parse_tag(), markup::parse_tag_contents(), gui2::dialogs::mp_lobby::pre_show(), prefs::prefs(), playmp_controller::process_network_data_impl(), ng::random_map::random_map(), wesnothd::banned::read(), team::team_info::read(), actions::undo_list::read(), preproc_define::read_argument(), game_events::event_handler::read_filters(), resistance_filter_matches_base(), game_events::filter_formula::serialize(), utils::config_filters::set_includes_if_present(), persist_file_context::set_var(), lua_gui2::show_message_dialog(), mp::start_local_game_commandline(), theme::status_item::status_item(), pathfind::teleport_group::teleport_group(), tod_manager::tod_manager(), carryover_info::transfer_all_to(), prefs::ui_sound_on(), prefs::ui_volume(), schema_validation::wml_key::wml_key(), game_events::wml_menu_item::wml_menu_item(), schema_validation::wml_tag::wml_tag(), prefs::write_preferences(), and statistics_record::write_str_int_map().

◆ has_child()

bool config::has_child ( config_key_type  key) const

Determine whether a config has a child or not.

Parameters
keyThe key of the child to find.
Returns
Whether a child is available.

Definition at line 312 of file config.cpp.

References children_, and i.

Referenced by unit::ability_affects_weapon(), replay::add_chat_message_location(), replay::add_config(), schema_validation::wml_tag::add_filter(), replay::add_start_if_not_there_yet(), schema_validation::wml_tag::add_switch(), unit::apply_builtin_effect(), unit::apply_modifications(), unit_type::apply_scenario_fix(), synced_context::ask_server_choice(), gui2::implementation::builder_listbox_base::builder_listbox_base(), gui2::implementation::builder_size_lock::builder_size_lock(), gui2::implementation::builder_stacked_widget::builder_stacked_widget(), gui2::implementation::builder_tab_container::builder_tab_container(), persist_file_context::clear_var(), savegame::convert_old_saves_1_11_0(), savegame::convert_old_saves_1_13_0(), ng::create_engine::current_level_has_side_data(), default_map_generator_job::default_generate_map(), gui2::dialogs::mp_options_helper::display_custom_options(), do_replay_handle(), saved_game::expand_mp_events(), ai::configuration::expand_simplified_aspects(), savegame::extract_summary_from_config(), gui2::dialogs::mp_join_game::fetch_game_config(), schema_validation::wml_type::from_config(), persist_context::get_node(), wfl::event_callable::get_value(), wfl::config_callable::get_value(), persist_file_context::get_var(), vconfig::has_child(), inherit_scenario(), unit::init(), addons_client::install_addon(), intf_append_ai(), campaignd::server::load_config(), editor::map_context::load_scenario(), markup::parse_attribute(), ai::configuration::parse_side_config(), markup::parse_tag_contents(), gui2::dialogs::editor_edit_pbl::pre_show(), playmp_controller::process_network_data_impl(), ng::random_map::random_map(), game_data::read_phase(), ai::default_recruitment::recruitment_aspect::recruitment_aspect(), user_choice_manager::search_in_replay(), ng::scenario::set_sides(), editor::map_context::to_config(), addons_client::upload_addon(), and desktop::user_bookmarks().

◆ hash()

std::string config::hash ( ) const

◆ inherit_attributes()

void config::inherit_attributes ( const config c)

Merge the attributes of config 'c' into this config, preserving this config's values.

Definition at line 1181 of file config.cpp.

References config_attribute_value::blank(), and values_.

Referenced by inherit_scenario().

◆ inherit_from()

void config::inherit_from ( const config c)

Merge config 'c' into this config, preserving this config's values.

Definition at line 1169 of file config.cpp.

References c, merge_with(), and swap().

Referenced by unit_type::create_sub_type().

◆ insert()

template<typename T >
void config::insert ( config_key_type  key,
T &&  value 
)
inline

Inserts an attribute into the config.

Parameters
keyThe name of the attribute
valueThe attribute value

Definition at line 520 of file config.hpp.

References operator[]().

Referenced by detail::config_construct_unpack().

◆ mandatory_child() [1/4]

config & config::mandatory_child ( config_key_type  key,
const std::string &  parent 
)

Returns a mandatory child node.

If the child is not found a wml_exception is thrown.

Precondition
parent[0] == '['
parent[parent.size() - 1] == ']'
Parameters
keyThe key of the child item to return.
parentThe section in which the child should reside. This is only used for error reporting.
Returns
The wanted child node.

Definition at line 344 of file config.cpp.

References children_.

◆ mandatory_child() [2/4]

const config & config::mandatory_child ( config_key_type  key,
const std::string &  parent 
) const

Returns a mandatory child node.

If the child is not found a wml_exception is thrown.

Precondition
parent[0] == '['
parent[parent.size() - 1] == ']'
Parameters
keyThe key of the child item to return.
parentThe section in which the child should reside. This is only used for error reporting.
Returns
The wanted child node.

Definition at line 353 of file config.cpp.

References children_.

◆ mandatory_child() [3/4]

config & config::mandatory_child ( config_key_type  key,
int  n = 0 
)

Returns the nth child with the given key, or throws an error if there is none.

Note
A negative n accesses from the end of the object. For instance, -1 is the index of the last child.

Definition at line 362 of file config.cpp.

References children_, and n.

Referenced by unit::ability_affects_weapon(), schema_validation::wml_tag::add_filter(), schema_validation::wml_tag::add_switch(), ai::protect_goal::add_targets(), synced_context::ask_server_choice(), BOOST_AUTO_TEST_CASE(), replay::build_chat_log(), gui2::implementation::builder_listbox_base::builder_listbox_base(), gui2::implementation::builder_size_lock::builder_size_lock(), persist_file_context::clear_var(), ng::connect_engine::connect_engine(), savegame::convert_old_saves_1_11_0(), create_side_engine(), default_map_generator_job::default_generate_map(), wb::side_actions::execute_net_cmd(), saved_game::expand_mp_events(), saved_game::expand_random_scenario(), unit::expire_modifications(), savegame::extract_summary_from_config(), gui2::dialogs::mp_join_game::fetch_game_config(), schema_validation::wml_type::from_config(), test_utils::game_config_manager::game_config_manager(), variable_info_implementation::vi_policy_create::get_child_at(), get_global_variable(), persist_context::get_node(), actions::undo::get_unit_type(), wfl::event_callable::get_value(), persist_file_context::get_var(), gui2::gui_definition::gui_definition(), inherit_scenario(), intf_append_ai(), ng::depcheck::manager::is_modification_active(), campaignd::server::load_config(), editor::map_context::load_scenario(), gui2::dialogs::editor_edit_unit::load_unit_type(), synced_checkup::local_checkup(), pathfind::manager::manager(), variable_info_implementation::replace_range_h::operator()(), ai::configuration::parse_side_config(), markup::parse_tag_contents(), gui2::dialogs::campaign_difficulty::post_show(), gui2::dialogs::editor_edit_pbl::pre_show(), gui2::dialogs::editor_edit_unit::pre_show(), gui2::dialogs::mp_join_game::pre_show(), mp::lobby_info::process_gamelist(), mp::lobby_info::process_gamelist_diff_impl(), playmp_controller::process_network_data_impl(), ng::random_map::random_map(), ai::default_recruitment::recruitment_aspect::recruitment_aspect(), display::refresh_report(), addons_client::request_addons_list(), gui2::dialogs::mp_match_history::request_history(), gui2::button_definition::resolution::resolution(), user_choice_manager::search_in_replay(), set_global_variable(), gui2::dialogs::mp_join_game::show_flg_select(), ng::side_engine::side_engine(), editor::map_context::to_config(), ng::depcheck::manager::try_era_by_index(), ng::depcheck::manager::try_scenario_by_index(), gui2::dialogs::mp_match_history::update_display(), gui2::dialogs::editor_edit_unit::update_wml_view(), gui2::dialogs::editor_edit_unit::write(), actions::undo::move_action::write(), and actions::undo::recruit_action::write().

◆ mandatory_child() [4/4]

const config & config::mandatory_child ( config_key_type  key,
int  n = 0 
) const

Returns the nth child with the given key, or throws an error if there is none.

Note
A negative n accesses from the end of the object. For instance, -1 is the index of the last child.

Definition at line 371 of file config.cpp.

References children_, and n.

◆ matches()

bool config::matches ( const config filter) const

◆ merge_attributes()

void config::merge_attributes ( const config cfg)

Definition at line 738 of file config.cpp.

References values_.

Referenced by do_resolve_rects(), expand_partialresolution(), lua_wml::intf_wml_merge(), and merge_with().

◆ merge_children()

void config::merge_children ( config_key_type  key)

All children with the given key will be merged into the first element with that key.

Definition at line 235 of file config.cpp.

References add_child(), append(), child_count(), child_range(), and clear_children_impl().

◆ merge_children_by_attribute()

void config::merge_children_by_attribute ( config_key_type  key,
config_key_type  attribute 
)

All children with the given key and with equal values of the specified attribute will be merged into the element with that key and that value of the attribute.

Definition at line 250 of file config.cpp.

References add_child(), child_count(), child_range(), clear_children_impl(), and i.

Referenced by ai::configuration::parse_side_config().

◆ merge_with()

void config::merge_with ( const config c)

◆ operator=() [1/2]

config & config::operator= ( config &&  cfg)

Definition at line 122 of file config.cpp.

References clear(), and swap().

◆ operator=() [2/2]

config & config::operator= ( const config cfg)

Definition at line 104 of file config.cpp.

References swap().

◆ operator[]() [1/2]

config::attribute_value & config::operator[] ( config_key_type  key)

Returns a reference to the attribute with the given key.

Creates it if it does not exist.

Definition at line 693 of file config.cpp.

References values_.

Referenced by get_or(), and insert().

◆ operator[]() [2/2]

const config::attribute_value & config::operator[] ( config_key_type  key) const

Returns a reference to the attribute with the given key or to a dummy empty attribute if it does not exist.

Definition at line 670 of file config.cpp.

References i, and values_.

◆ optional_child() [1/2]

optional_config config::optional_child ( config_key_type  key,
int  n = 0 
)

Equivalent to mandatory_child, but returns an empty optional if the nth child was not found.

Definition at line 380 of file config.cpp.

References children_, and n.

Referenced by unit::ability_active_impl(), unit::ability_affects_self(), ai::component_manager::add_component(), campaignd::add_license(), theme::add_object(), replay_controller::add_replay_theme(), ai::target_unit_goal::add_targets(), ai::protect_goal::add_targets(), unit::apply_builtin_effect(), apply_diff(), attack_type::apply_modification(), unit_type::apply_scenario_fix(), ai::ai_default_rca::aspect_attacks::aspect_attacks(), team::build(), unit_type::build_help_index(), gui2::implementation::builder_listbox::builder_listbox(), gui2::implementation::builder_listbox_base::builder_listbox_base(), gui2::implementation::builder_matrix::builder_matrix(), gui2::implementation::builder_multi_page::builder_multi_page(), gui2::implementation::builder_panel::builder_panel(), gui2::implementation::builder_scrollbar_panel::builder_scrollbar_panel(), gui2::implementation::builder_slider::builder_slider(), gui2::implementation::builder_toggle_panel::builder_toggle_panel(), ai::candidate_action::candidate_action(), wfl::candidate_action_with_filters::candidate_action_with_filters(), ai::config_value_translator< terrain_filter >::cfg_to_value(), ai::config_value_translator< config >::cfg_to_value(), ai::component_manager::change_component(), vconfig::child(), ai::composite_aspect< T >::composite_aspect(), default_map_generator::config_name(), addons_client::connect(), ng::connect_engine::connect_engine(), savegame::convert_old_saves_1_11_0(), savegame::convert_old_saves_1_13_0(), savegame::convert_old_saves_1_13_1(), savegame::loadgame::copy_era(), default_map_generator_job::default_generate_map(), addons_client::delete_remote_addon(), do_replay_handle(), savegame::extract_summary_from_config(), gui2::dialogs::mp_join_game::fetch_game_config(), unit_abilities::filter_base_matches(), ng::flg_manager::flg_manager(), unit_type::get_ability_list(), get_addon_install_info(), prefs::get_child(), variable_info_implementation::vi_policy_throw::get_child_at(), variable_info_implementation::vi_policy_const::get_child_at(), ng::flg_manager::get_default_faction(), get_deprecated_child(), gui2::dialogs::mp_join_game::get_scenario(), campaignd::server::handle_upload(), unit::init(), ai::configuration::init(), addons_client::is_error_response(), lua_kernel_base::load_binary(), campaignd::server::load_config(), wesnothd::server::load_config(), font::load_font_config(), luaW_copy_upvalues(), wb::move::move(), ai::target_location_goal::on_create(), ai::protect_goal::on_create(), ai::formula_ai::on_create(), game_events::filter_attack::operator()(), attack_type::overwrite_special_checking(), markup::parse_attribute(), help::parse_config(), cave_map_generator::cave_map_generator_job::place_chamber(), game_events::wml_event_pump::process_event(), wb::manager::process_network_data(), playmp_controller::process_network_data_impl(), wesnothd::ban_manager::read(), preproc_define::read(), statistics_record::stats_t::read(), unit_type_data::read_hide_help(), addons_client::request_distribution_terms(), gui2::addon_list_definition::resolution::resolution(), gui2::button_definition::resolution::resolution(), gui2::multi_page_definition::resolution::resolution(), gui2::size_lock_definition::resolution::resolution(), gui2::stacked_widget_definition::resolution::resolution(), gui2::window_definition::resolution::resolution(), lua_kernel_base::run_lua_tag(), ng::connect_engine::scenario(), help::section_is_referenced(), saved_game::set_data(), gui2::dialogs::mp_join_game::show_flg_select(), ng::side_engine::side_engine(), theme::status_item::status_item(), help::topic_is_referenced(), unit_type::unit_type(), addons_client::upload_addon(), campaignd::server::validate_addon(), and gui2::builder_window::window_resolution::window_resolution().

◆ optional_child() [2/2]

optional_const_config config::optional_child ( config_key_type  key,
int  n = 0 
) const

Equivalent to mandatory_child, but returns an empty optional if the nth child was not found.

Definition at line 385 of file config.cpp.

References children_, and n.

◆ ordered_begin() [1/2]

config::all_children_iterator config::ordered_begin ( )

Definition at line 888 of file config.cpp.

References ordered_children.

◆ ordered_begin() [2/2]

config::const_all_children_iterator config::ordered_begin ( ) const

◆ ordered_cbegin()

config::const_all_children_iterator config::ordered_cbegin ( ) const

Definition at line 865 of file config.cpp.

References ordered_children.

◆ ordered_cend()

config::const_all_children_iterator config::ordered_cend ( ) const

Definition at line 875 of file config.cpp.

References ordered_children.

◆ ordered_end() [1/2]

config::all_children_iterator config::ordered_end ( )

Definition at line 893 of file config.cpp.

References ordered_children.

◆ ordered_end() [2/2]

config::const_all_children_iterator config::ordered_end ( ) const

◆ recursive_clear_value()

void config::recursive_clear_value ( config_key_type  key)

Definition at line 599 of file config.cpp.

References children_, p, and values_.

Referenced by get_checksum().

◆ remove_attribute()

void config::remove_attribute ( config_key_type  key)

◆ remove_attributes()

template<typename... T>
void config::remove_attributes ( T...  keys)
inline

◆ remove_child() [1/2]

void config::remove_child ( config_key_type  key,
std::size_t  index 
)

◆ remove_child() [2/2]

std::vector< config::child_pos >::iterator config::remove_child ( const child_map::iterator &  l,
std::size_t  pos 
)
private

Removes the child at position pos of l.

Definition at line 610 of file config.cpp.

References utf8::index(), ordered_children, and p.

◆ remove_children()

void config::remove_children ( config_key_type  key,
const std::function< bool(const config &)> &  p = {} 
)

Removes all children with tag key for which p returns true.

If no predicate is provided, all key tags will be removed.

Definition at line 650 of file config.cpp.

References children_, utf8::index(), p, and remove_child().

Referenced by unit::add_modification(), savegame::save_index_class::clean_up_index(), campaignd::server::handle_upload(), intf_append_ai(), ng::side_engine::new_config(), savegame::save_index_class::remove(), and editor::map_context::to_config().

◆ splice_children()

void config::splice_children ( config src,
config_key_type  key 
)

Moves all the children with tag key from src to this.

Definition at line 577 of file config.cpp.

References children_, dst, utils::erase_if(), ordered_children, rect::size(), and src.

Referenced by inherit_scenario(), and game_lua_kernel::save_game().

◆ swap()

void config::swap ( config cfg)

◆ valid_attribute()

bool config::valid_attribute ( config_key_type  name)
static

◆ valid_tag()

bool config::valid_tag ( config_key_type  name)
static

Definition at line 129 of file config.cpp.

References c.

Referenced by luaW_toconfig(), valid_attribute(), and write_internal().

◆ validate_wml()

bool config::validate_wml ( ) const

Returns true if this object represents valid WML, i.e.

can be saved to disk and again loaded by the WML parser.

Definition at line 1344 of file config.cpp.

References children_.

Referenced by lua_wml::intf_wml_valid().

Friends And Related Function Documentation

◆ operator==

bool operator== ( const config a,
const config b 
)
friend

Definition at line 1358 of file config.cpp.

Member Data Documentation

◆ children_

child_map config::children_
private

◆ diff_track_attribute

const char * config::diff_track_attribute = "__diff_track"
static

The name of the attribute used for tracking diff changes.

Definition at line 817 of file config.hpp.

Referenced by apply_diff(), clear_diff_track(), and mp::lobby_info::process_gamelist_diff_impl().

◆ ordered_children

std::vector<child_pos> config::ordered_children
private

◆ values_

attribute_map config::values_
private

The documentation for this class was generated from the following files: