World Builder  1.1.0-pre
A geodynamic initial conditions generator
double.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2018-2024 by the authors of the World Builder code.
3 
4  This file is part of the World Builder.
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
20 
22 #include <cmath>
23 
24 namespace WorldBuilder
25 {
26  namespace Types
27  {
28  Double::Double(const double default_value_)
29  :
30  default_value(default_value_)
31  {
33  }
34 
35 
36  Double::Double(Double const &other)
37  :
39  {
41  }
42 
43 
44 
46  = default;
47 
48 
49  void
51  const std::string &name,
52  const std::string &documentation) const
53  {
54  using namespace rapidjson;
55  Document &declarations = prm.declarations;
56  const std::string base = prm.get_full_json_path() + "/" + name;
57 
58  if (std::isnan(default_value))
59  Pointer((base + "/default value").c_str()).Set(declarations,"NaN");
60  else
61  Pointer((base + "/default value").c_str()).Set(declarations,default_value);
62 
63  Pointer((base + "/type").c_str()).Set(declarations,"number");
64  Pointer((base + "/description").c_str()).Set(declarations,documentation.c_str());
65  }
66  } // namespace Types
67 } // namespace WorldBuilder
68 
void write_schema(Parameters &prm, const std::string &name, const std::string &documentation) const override final
Definition: double.cc:50
std::string get_full_json_path(size_t max_size=std::numeric_limits< size_t >::max()) const
Definition: parameters.cc:1933
Double(const double default_value)
Definition: double.cc:28
rapidjson::Document declarations
Definition: parameters.h:248
~Double() override final