1 #ifndef INICPP_SECTION_SCHEMA_H 2 #define INICPP_SECTION_SCHEMA_H 9 #include "option_schema.h" 40 using opt_schema_vector = std::vector<std::shared_ptr<option_schema>>;
41 using opt_schema_map = std::map<std::string, std::shared_ptr<option_schema>>;
42 using opt_schema_map_pair = std::pair<std::string, std::shared_ptr<option_schema>>;
47 item_requirement requirement_;
52 opt_schema_vector options_;
54 opt_schema_map options_map_;
88 const std::string &get_name()
const;
93 bool is_mandatory()
const;
98 const std::string &get_comment()
const;
113 auto add_it = options_map_.find(arguments.
name);
114 if (add_it == options_map_.end()) {
115 std::shared_ptr<option_schema> add = std::make_shared<option_schema>(arguments);
116 options_.push_back(add);
117 options_map_.insert(opt_schema_map_pair(add->get_name(), add));
127 void remove_option(
const std::string &
name);
161 const option_schema &operator[](
const std::string &option_name)
const;
167 bool contains(
const std::string &option_name)
const;
175 void validate_section(
section §, schema_mode mode)
const;
183 std::ostream &write_additional_info(std::ostream &os)
const;
190 std::ostream &write_section_name(std::ostream &os)
const;
197 INICPP_API
friend std::ostream &operator<<(std::ostream &os,
const section_schema §_schema);
200 INICPP_API std::ostream &operator<<(std::ostream &os,
const section_schema §_schema);
void add_option(const option_schema_params< ArgType > &arguments)
item_requirement requirement