20 #ifndef WORLD_BUILDER_PARAMETERS_H 21 #define WORLD_BUILDER_PARAMETERS_H 27 #include "rapidjson/schema.h" 36 template<
unsigned int dim>
52 namespace CoordinateSystems
57 namespace GravityModel
98 void initialize(std::string &filename,
bool has_output_dir =
false,
const std::string &output_dir =
"");
109 T
get(
const std::string &name);
116 std::vector<T> get_vector(
const std::string &name);
118 std::vector<std::vector<double>> get_vector_or_double(
const std::string &name);
125 std::pair<std::vector<double>,std::vector<double>>
126 get(
const std::string &name,
127 const std::vector<Point<2> > &addition_points = {});
133 std::pair<std::vector<double>,std::vector<double>> get_value_at_array(
const std::string &name);
140 template<
class T,
class A,
class B,
class C,
class D>
141 std::vector<T> get_vector(
const std::string &name, std::vector<std::shared_ptr<A> > &, std::vector<std::shared_ptr<B> > &, std::vector<std::shared_ptr<C> > &, std::vector<std::shared_ptr<D> > &);
148 std::unique_ptr<T> get_unique_pointer(
const std::string &name);
159 get_unique_pointers(
const std::string &name, std::vector<std::unique_ptr<T> > &vector);
170 get_shared_pointers(
const std::string &name, std::vector<std::shared_ptr<T> > & );
182 check_entry(
const std::string &name)
const;
191 void declare_entry(
const std::string &name,
193 const std::string &documentation);
203 void enter_subsection(
const std::string &name);
212 void leave_subsection();
223 declare_model_entries(
const std::string &model_group_name,
224 const std::string &parent_name,
225 const std::map<std::string,
void ( *)(
Parameters &,
const std::string &)> &declare_map,
226 const std::vector<std::string> &required_entries = {},
227 const std::vector<std::tuple<std::string,const WorldBuilder::Types::Interface &, std::string> > &extra_declarations = {});
239 const std::string path_separator =
".";
260 std::vector<std::unique_ptr<WorldBuilder::Features::Interface> >
features;
283 std::string get_full_json_path(
size_t max_size = std::numeric_limits<size_t>::max())
const;
291 std::string get_full_json_schema_path()
const;
322 std::string get_relative_path()
const;
329 std::string get_relative_path_without_arrays()
const;
rapidjson::Document parameters
std::unique_ptr< WorldBuilder::GravityModel::Interface > gravity_model
std::vector< std::unique_ptr< WorldBuilder::Features::Interface > > features
std::unique_ptr< WorldBuilder::CoordinateSystems::Interface > coordinate_system
std::vector< std::string > path
rapidjson::Document declarations