Loading [MathJax]/extensions/tex2jax.js
Plugins
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
parameter_set.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2015: G-CSC, Goethe University Frankfurt
3 * Author: Tim Schön
4 *
5 * This file is part of UG4.
6 *
7 * UG4 is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License version 3 (as published by the
9 * Free Software Foundation) with the following additional attribution
10 * requirements (according to LGPL/GPL v3 §7):
11 *
12 * (1) The following notice must be displayed in the Appropriate Legal Notices
13 * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14 *
15 * (2) The following notice must be displayed at a prominent place in the
16 * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17 *
18 * (3) The following bibliography is recommended for citation and must be
19 * preserved in all covered files:
20 * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21 * parallel geometric multigrid solver on hierarchically distributed grids.
22 * Computing and visualization in science 16, 4 (2013), 151-164"
23 * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24 * flexible software system for simulating pde based models on high performance
25 * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26 *
27 * This program is distributed in the hope that it will be useful,
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30 * GNU Lesser General Public License for more details.
31 */
32
33#ifndef __H__UG__parameter_set__
34#define __H__UG__parameter_set__
35
36
37
38#include <nlohmann/json.hpp>
39using namespace nlohmann;
40
41
42#include <fstream>
43#include <map>
44#include <string>
45#include <stdexcept>
46
47#include <boost/optional.hpp>
48#include <boost/exception/diagnostic_information.hpp>
49
50#include "common/ug_config.h"
52
53#include <registry/registry.h>
54#include <registry/class.h>
56#include <bridge/bridge.h>
60
61namespace ug
62{
63 namespace JSONToolkit
64 {
66 {
67
69
71 {
72 this->name = name;
73 this->objValue = objValue;
74 }
75
76 std::string name;
78 };
79
80
82 {
83 public:
85 ParameterSet(const char* json);
86 void loadJSON(const char* json);
87 void loadJSONFile(const char* file);
88 void loadFromJSONObject(const json jsonobject);
89 bridge::CustomReturn get(const char* name);
90
91 private:
92 std::map<std::string, ParameterValue> parameters;
93
94 };
95
96
98 boost::optional<ParameterValue> CreateParameterValue(const json& jsonobject);
99
100
101 } // end of namespace JSONToolkit
102
103}// end of namespace ug
104
105#endif
Definition parameter_set.h:82
void loadJSONFile(const char *file)
Definition parameter_set.cpp:59
void loadFromJSONObject(const json jsonobject)
Definition parameter_set.cpp:68
void loadJSON(const char *json)
Definition parameter_set.cpp:53
std::map< std::string, ParameterValue > parameters
Definition parameter_set.h:92
ParameterSet()
Definition parameter_set.cpp:44
bridge::CustomReturn get(const char *name)
Definition parameter_set.cpp:83
const NullSmartPtr SPNULL
boost::optional< ParameterValue > CreateParameterValue(const json &j)
This function creates a 'ParameterValue' from JSON.
Definition parameter_set.cpp:112
Definition parameter_set.h:66
std::string name
Definition parameter_set.h:76
ParameterValue()
Definition parameter_set.h:68
ParameterValue(std::string name, SmartPtr< void > objValue)
Definition parameter_set.h:70
SmartPtr< void > objValue
Definition parameter_set.h:77