1 #include "section_schema.h"     2 #include "string_utils.h"     7         : name_(source.name_), requirement_(source.requirement_), comment_(source.comment_)
    10         options_.reserve(source.options_.size());
    11         for (
auto &opt : source.options_) {
    12             options_.push_back(std::make_shared<option_schema>(*opt));
    16         for (
auto &opt : options_) {
    17             options_map_.insert(opt_schema_map_pair(opt->get_name(), opt));
    23         if (
this != &source) {
    25             std::swap(*
this, new_src);
    33         *
this = std::move(source);
    38         if (
this != &source) {
    39             name_ = std::move(source.name_);
    40             requirement_ = std::move(source.requirement_);
    41             comment_ = std::move(source.comment_);
    42             options_ = std::move(source.options_);
    43             options_map_ = std::move(source.options_map_);
    50         : name_(arguments.name), requirement_(arguments.requirement), comment_(arguments.comment)
    66         return (requirement_ == item_requirement::mandatory ? 
true : 
false);
    71         auto add_it = options_map_.find(opt.
get_name());
    72         if (add_it == options_map_.end()) {
    73             std::shared_ptr<option_schema> add = std::make_shared<option_schema>(opt);
    74             options_.push_back(add);
    75             options_map_.insert(opt_schema_map_pair(add->get_name(), add));
    83         auto del_it = options_map_.find(option_name);
    84         if (del_it != options_map_.end()) {
    86             options_map_.erase(del_it);
    88             options_.erase(std::remove_if(options_.begin(),
    90                                [&](std::shared_ptr<option_schema> opt) {
    91                                    return (opt->get_name() == option_name ? 
true : 
false);
   101         return options_.size();
   106         if (index >= 
size()) {
   110         return *options_[index];
   115         if (index >= 
size()) {
   119         return *options_[index];
   131         std::shared_ptr<option_schema> result;
   133             result = options_map_.at(option_name);
   134         } 
catch (std::out_of_range) {
   143             options_map_.at(option_name);
   145         } 
catch (std::out_of_range) {
   161         for (
auto &opt : options_) {
   166                 opt->validate_option(sect[opt->get_name()]);
   167             } 
else if (opt->is_mandatory()) {
   170                     "Mandatory option '" + opt->get_name() + 
"' is missing in section '" + sect.
get_name() + 
"'");
   174                 sect.
add_option(opt->get_name(), opt->get_default_value());
   176                 opt->validate_option(sect[opt->get_name()]);
   181         for (
auto &opt : sect) {
   190             if (mode == schema_mode::strict) {
   200         for (
auto &comment_line : comment_lines) {
   201             os << 
";" << comment_line << std::endl;
   205         std::string info_line = 
is_mandatory() ? 
"mandatory" : 
"optional";
   206         os << 
";<" << info_line << 
">" << std::endl;
   213         os << 
"[" << 
get_name() << 
"]" << std::endl;
   226         for (
auto &opt : sect_schema.options_) {
 bool contains(const std::string &option_name) const 
 
void remove_option(const std::string &name)
 
std::ostream & write_additional_info(std::ostream &os) const 
 
option_schema & operator[](size_t index)
 
const std::string & get_name() const 
 
INICPP_API friend std::ostream & operator<<(std::ostream &os, const section_schema §_schema)
 
std::ostream & write_section_name(std::ostream &os) const 
 
void add_option(const std::string &option_name, ValueType value)
 
const std::string & get_comment() const 
 
void validate_section(section §, schema_mode mode) const 
 
bool contains(const std::string &option_name) const 
 
section_schema & operator=(const section_schema &source)
 
std::vector< std::string > split(const std::string &str, char delim)
 
bool is_mandatory() const 
 
const std::string & get_name() const 
 
void add_option(const option_schema &opt)
 
const std::string & get_name() const