cvtdriver
Driver for SmartFarm Device Converter
cvtoption.h
이 파일의 문서화 페이지로 가기
1 
12 #ifndef _CVT_OPTION_
13 #define _CVT_OPTION_
14 
15 #include <jsoncons/json.hpp>
16 #include <jsoncons_ext/jsonpath/json_query.hpp>
17 
18 #include "cvtdevice.h"
19 #include "cvtdevicefactory.h"
20 
21 using namespace std;
22 
23 using jsoncons::json;
24 using jsoncons::jsonpath::json_query;
25 
26 namespace stdcvt {
27 
28 /*
29  @brief CvtOption는 설정파일에 포함된 드라이버관련 설정을 전달하기 위한 클래스이다.
30  설정파일에 포함되지 않았지만 드라이버 운영에 필요할 수 있는 객체를 전달하기 위한 용도로도 활용될 수 있다.
31 */
32 class CvtOption {
33 private:
34  map<string, void *> _objects;
35  json _option;
36  CvtDeviceFactory _devfac;
37 
38 public:
43  CvtOption(json option) {
44  _option = option;
45  if (option.has_key("_sensors")) {
46  _devfac.setsensors (option["_sensors"]);
47  }
48  if (option.has_key("_motors")) {
49  _devfac.setmotors (option["_motors"]);
50  }
51  if (option.has_key("_switches")) {
52  _devfac.setswitches (option["_switches"]);
53  }
54  }
55 
56  ~CvtOption() {
57  }
58 
64  json getjson (string path) {
65  string _path = "$." + path;
66  json ret = json_query(_option, path);
67  return ret;
68  }
69 
75  string get (string key) {
76  json ret = (_option)[key];
77  return ret.as<string>();
78  }
79 
85  double getdouble (string key) {
86  json ret = (_option)[key];
87  return ret.as<double>();
88  }
89 
95  int getint (string key) {
96  json ret = (_option)[key];
97  return ret.as<int>();
98  }
99 
105  void *getobject (string key) {
106  map<string, void *>::iterator iter;
107  iter = _objects.find (key);
108  return (void *)(iter->second);
109  }
110 
117  void *setobject (string key, void *object) {
118  pair<map<string, void *>::iterator,bool> ret;
119 
120  ret = _objects.insert (pair<string , void *> (key, object));
121  if (ret.second == false) {
122  LOG(INFO) << "setobject fail : " << key << " already existed.";
123  }
124 
125  return (void *)(ret.first->second);
126  }
127 
133  return &_devfac;
134  }
135 };
136 
137 } // namespace stdcvt
138 #endif
void setmotors(json motors)
Definition: cvtdevicefactory.h:61
void * setobject(string key, void *object)
Definition: cvtoption.h:117
json getjson(string path)
Definition: cvtoption.h:64
Definition: cvtoption.h:32
CvtOption(json option)
Definition: cvtoption.h:43
void setsensors(json sensors)
Definition: cvtdevicefactory.h:53
double getdouble(string key)
Definition: cvtoption.h:85
CvtDeviceFactory * getdevfactory()
Definition: cvtoption.h:132
void * getobject(string key)
Definition: cvtoption.h:105
void setswitches(json switches)
Definition: cvtdevicefactory.h:69
int getint(string key)
Definition: cvtoption.h:95
Definition: cvtdevicefactory.h:33
Definition: cvtcode.h:17