HCE project C++ developers source code library  1.1.1
HCE project developer library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
JsonSerializable.hpp
Go to the documentation of this file.
1 
14 #ifndef JSON_SERIALIZABLE_HPP
15 #define JSON_SERIALIZABLE_HPP
16 
17 #include <Poco/Dynamic/Var.h>
18 
19 namespace HCE
20 {
21 //-----------------------------------------------------------------------------
23 {
24 protected:
25  template <class T = unsigned long long>
26  T convertVarToNumeric(Poco::Dynamic::Var& var, T defaultValue)
27  {
28  T result=0;
29  try
30  {
31  if (var.isString())
32  result = static_cast<T>(std::stoull(var.convert<std::string>()));
33  else
34  {
35  if (var.isNumeric())
36  {
37  if (var.isInteger())
38  {
39  if (var.isSigned())
40  result = static_cast<T>(var.convert<Poco::Int64>());
41  else
42  result = static_cast<T>(var.convert<Poco::UInt64>());
43  }
44  else
45  result = static_cast<T>(var.convert<double>());
46  }
47  }
48  }
49  catch(...)
50  {
51  result = defaultValue;
52  }
53  return result;
54  }
55 public:
56  IJsonSerializable(void) : errorMsg(""), errorCode(0), _isError(false) {}
57  virtual ~IJsonSerializable(void) {}
58 
59  virtual bool serialize(std::string& json)=0;
60  virtual bool unserialize(const std::string& json)=0;
61 
62  void setErrorMsg(const std::string& errorMsg_) {errorMsg=errorMsg_;}
63  std::string getErrorMsg(void) const {return errorMsg;}
64 
65  void setErrorCode(unsigned int errorCode_) {errorCode=errorCode_;}
66  unsigned int getErrorCode(void) const {return errorCode;}
67 
68  bool isError(void) const {return _isError;}
69 protected:
70  std::string errorMsg;
71  unsigned int errorCode;
72  bool _isError;
73 };
74 //-----------------------------------------------------------------------------
75 //-----------------------------------------------------------------------------
76 } // end namespace HCE
77 
78 #endif // JSON_SERIALIZABLE_HPP