Phoxonics  1.0
Object Oriented FDTD Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ConfigJsonParser.hpp
Go to the documentation of this file.
1 /*
2  * ConfigJsonParser.hpp
3  *
4  * Created on: Oct 12, 2014
5  * Author: nano
6  */
7 
8 #ifndef CONFIGJSONPARSER_HPP_
9 #define CONFIGJSONPARSER_HPP_
10 
11 #include "MainConfig.hpp"
12 #include "LoggerConfig.hpp"
13 #include "SimulationConfig.hpp"
14 #include "ConfigBase.hpp"
15 #include "GridConfig.hpp"
16 #include "CellConfig.hpp"
17 #include "DetectorConfig.hpp"
18 #include "EngineConfig.hpp"
19 #include "SourceConfig.hpp"
20 #include "PmlConfig.hpp"
21 #include "ConfigParam.hpp"
22 #include "../common/Vector3D.hpp"
23 #include "GeometryConfig.hpp"
24 #include "ConfigFactory.hpp"
25 #include "../common/ConfigParamHelper.hpp"
26 
27 #include <fstream>
28 #include <iostream>
29 #include <string>
30 #include <vector>
31 #include <memory>
32 #include <stdexcept>
33 
34 #include "../../../cpp-json/include/cpp-json/json.h"
35 #include "../../../common/common.hpp"
36 
37 namespace phoxonics {
38 namespace core {
39 
40 class ConfigJsonParser {
41 public:
42  // default construction
43  explicit ConfigJsonParser();
44  explicit ConfigJsonParser(std::string json_config_file);
45  virtual ~ConfigJsonParser();
46 
48  std::string json_config_file;
49 
50  /************************* Main Confg **************************/
51  // parse configuration json objects
52  MainConfig parse_main_config();
53 
54  // parse configuration json objects
55  MainConfig parse_main_config(const json::value& root_json_val);
56 
57  // parse logger json objects
58  LoggerConfig parse_logger_config(const json::value& root_json_val);
59  /***************************************************************/
60 
61  /********************** Simulations Confg **********************/
62  // parse simulation json objects
63  SimulationConfig parse_simulation_config();
64 
65  // parse a simulation json object
66  SimulationConfig parse_simulation_config(const json::value &root_json_val);
67 
68  // parse a grid json object
69  GridConfig parse_grid_config(const json::value &root_json_val);
70 
71  // parse a cell json object
72  CellConfig parse_cell_config(const json::value &root_json_val);
73 
74  // parse a source json objects
75  std::vector<SourceConfig> parse_source_configs(const json::value &root_json_val);
76 
77  // parse a detector json object
78  std::vector<DetectorConfig> parse_detector_configs(const json::value &root_json_val);
79 
80  // parse a pml json objects
81  PmlConfig parse_pml_config(const json::value &root_json_val);
82 
83  // parse a pml json objects
84  std::vector<GeometryConfig> parse_geometry_configs(const json::value &root_json_val);
85 
86  // parse a engine json object
87  EngineConfig parse_engine_config(const json::value &root_json_val);
88 
89  // add config parameters for all configs
90  void add_config_params(ConfigBase& config_instance, const json::value& json_val);
91 
92  // parse json config param objects
93  std::vector<ConfigParam> parse_config_params(const json::value& json_val);
94 
95  // parse json vector 3d objects
96  Vector3D parse_vector_3d(const json::value &json_val);
97 
98  // sample supported format for frequencies: "200-205,215,220"
99  std::vector<int> str_freqs_to_vector(std::string str_freqs);
100  /***************************************************************/
101 
102 private:
103  // common utils
106  ConfigParamHelper cfg_parm_helper_;
107 };
108 
109 } /* namespace core */
110 } /* namespace phoxonics */
111 
112 #endif /* CONFIGJSONPARSER_HPP_ */
std::vector< SourceConfig > parse_source_configs(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:125
EngineConfig parse_engine_config(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:232
void add_config_params(ConfigBase &config_instance, const json::value &json_val)
Definition: ConfigJsonParser.cpp:259
std::vector< int > str_freqs_to_vector(std::string str_freqs)
Definition: CommonBase.hpp:14
MainConfig parse_main_config()
Definition: ConfigJsonParser.cpp:32
ConfigJsonParser()
Definition: ConfigJsonParser.cpp:13
GridConfig parse_grid_config(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:92
CellConfig parse_cell_config(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:109
SimulationConfig parse_simulation_config()
Definition: ConfigJsonParser.cpp:61
std::vector< ConfigParam > parse_config_params(const json::value &json_val)
Definition: ConfigJsonParser.cpp:268
Definition: File.hpp:19
phoxonics::common::Logger log
Definition: ConfigJsonParser.hpp:47
LoggerConfig parse_logger_config(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:52
std::vector< DetectorConfig > parse_detector_configs(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:152
Definition: Strings.hpp:20
std::vector< GeometryConfig > parse_geometry_configs(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:201
Vector3D parse_vector_3d(const json::value &json_val)
Definition: ConfigJsonParser.cpp:289
virtual ~ConfigJsonParser()
Definition: ConfigJsonParser.cpp:28
Definition: Logger.hpp:23
std::string json_config_file
Definition: ConfigJsonParser.hpp:48
PmlConfig parse_pml_config(const json::value &root_json_val)
Definition: ConfigJsonParser.cpp:183