OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
JsonConfig.h
Go to the documentation of this file.
1 //**************************************************************************************************
2 //
3 // OSSIM Open Source Geospatial Data Processing Library
4 // See top level LICENSE.txt file for license information
5 //
6 //**************************************************************************************************
7 
8 #pragma once
9 
10 #include <ostream>
14 #include <vector>
15 #include <map>
16 
17 namespace ossim
18 {
19 // Forward decl defined after JsonParam
20 class JsonParam;
21 
65 {
66 public:
68  JsonConfig();
69 
70  JsonConfig(const ossimFilename& configFile);
71 
73  virtual ~JsonConfig();
74 
76  bool open(const ossimFilename& configFile);
77 
79  virtual void loadJSON(const Json::Value& params_json_node);
80 
82  virtual void saveJSON(Json::Value& params_json_node) const;
83 
85  JsonParam& getParameter(const char* paramName);
86 
88  void setParameter(const JsonParam& p);
89 
91  bool diagnosticLevel(unsigned int level) const;
92 
94  friend std::ostream& operator<<(std::ostream& out, const JsonConfig& obj);
95 
96  bool paramExists(const char* paramName) const;
97 
98 protected:
99  JsonConfig(const JsonConfig& /*hide_this*/) {}
100 
101  bool getBoolValue(bool& rtn_val, const std::string& json_value) const;
102 
103  std::map<std::string, JsonParam> m_paramsMap;
105 };
106 
107 
113 {
114 public:
115  enum ParamType {
117  BOOL=1,
118  INT=2,
119  UINT=3,
120  FLOAT=4,
123  };
124 
126 
127  JsonParam(const ossimString& argname,
128  const ossimString& arglabel,
129  const ossimString& argdescr,
130  ParamType argparamType,
131  void* value);
132 
133  JsonParam(const JsonParam& copy);
134 
136 
138  bool loadJSON(const Json::Value& json_node);
139 
140  void saveJSON(Json::Value& json_node) const;
141 
142  const ossimString& name() const { return _name; }
143  const ossimString& label() const { return _label; }
144  const ossimString& descr() const { return _descr; }
145  ParamType type() const { return _type; }
146 
147  bool isBool() const {return (_type == BOOL); }
148  bool asBool() const;
149 
150  bool isUint() const {return (_type == UINT); }
151  unsigned int asUint() const;
152 
153  bool isInt() const {return (_type == INT);}
154  int asInt() const;
155 
156  bool isFloat() const {return (_type == FLOAT);}
157  double asFloat() const;
158 
159  bool isString() const {return (_type == STRING);}
160  std::string asString() const;
161 
162  bool isVector() const {return (_type == VECTOR);}
163  void asVector(std::vector<double>& v) const;
164 
165  bool operator==(const JsonParam& p) const { return (p._name == _name); }
166 
168  friend std::ostream& operator<<(std::ostream& out, const JsonParam& obj);
169 
170 private:
171  void setValue(void* value);
172  void resetValue();
173 
178  void* _value;
179  std::vector<ossimString> _allowedValues; // only used for multiple-choice string parameters
180 };
181 
182 
183 }
const ossimString & descr() const
Definition: JsonConfig.h:144
void setValue(void *value)
Definition: JsonConfig.cpp:47
const ossimString & label() const
Definition: JsonConfig.h:143
JsonConfig(const JsonConfig &)
Definition: JsonConfig.h:99
This code was derived from https://gist.github.com/mshockwave.
Definition: Barrier.h:8
Base class for maintaining parameters affecting the runtime configuration of OSSIM executables...
Definition: JsonConfig.h:64
double asFloat() const
Definition: JsonConfig.cpp:278
unsigned int asUint() const
Definition: JsonConfig.cpp:264
void asVector(std::vector< double > &v) const
Definition: JsonConfig.cpp:292
std::vector< ossimString > _allowedValues
Definition: JsonConfig.h:179
ossimString _name
Definition: JsonConfig.h:174
std::map< std::string, JsonParam > m_paramsMap
Definition: JsonConfig.h:103
ParamType type() const
Definition: JsonConfig.h:145
std::string asString() const
Definition: JsonConfig.cpp:285
Represents a single configuration parameter.
Definition: JsonConfig.h:112
void saveJSON(Json::Value &json_node) const
Definition: JsonConfig.cpp:192
bool isString() const
Definition: JsonConfig.h:159
ParamType _type
Definition: JsonConfig.h:177
bool asBool() const
Definition: JsonConfig.cpp:257
bool operator==(const JsonParam &p) const
Definition: JsonConfig.h:165
const ossimString & name() const
Definition: JsonConfig.h:142
bool isInt() const
Definition: JsonConfig.h:153
ossimString _label
Definition: JsonConfig.h:175
friend std::ostream & operator<<(std::ostream &out, const JsonParam &obj)
Outputs JSON to output stream provided.
Definition: JsonConfig.cpp:299
bool loadJSON(const Json::Value &json_node)
Initializes from a JSON node.
Definition: JsonConfig.cpp:111
Pure virtual interface for classes implementing JSON-based load/save state.
Definition: JsonInterface.h:19
#define OSSIM_DLL
ostream & operator<<(std::ostream &out, const JsonParam &obj)
Definition: JsonConfig.cpp:299
bool isBool() const
Definition: JsonConfig.h:147
ossimString _descr
Definition: JsonConfig.h:176
int asInt() const
Definition: JsonConfig.cpp:271
bool isVector() const
Definition: JsonConfig.h:162
bool isUint() const
Definition: JsonConfig.h:150
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
static JsonParam s_nullParam
Definition: JsonConfig.h:104
bool isFloat() const
Definition: JsonConfig.h:156