1 #ifndef __JDB_JSONSUPPORTKIT__
2 #define __JDB_JSONSUPPORTKIT__
11 #include "TDictionary.h"
27 namespace JDATABASE {}
28 namespace JPP {
using namespace JDATABASE; }
48 js =
json(static_cast<const std::string&>(
object));
60 static_cast<std::string&
>(object) = js.get<std::string>();
72 virtual void to_json(
json& js,
const void* p)
const = 0;
100 public std::map< std::string, std::shared_ptr<JSonIO> >,
120 for_each<JRemove<JPrimitiveTypes_t, JTypeList<char, long double> >::typelist>(*this);
139 const TDictionary* pDictionary = TDictionary::GetDictionary(
typeid(
T));
141 if (pDictionary != NULL)
142 return pDictionary->GetName();
155 (*this)[getTypename<T>()] = std::make_shared<
JSonIO_t<T> >();
178 for (unique_ptr<TIterator>
i(cls.
getClass()->GetListOfDataMembers()->MakeIterator());
const TDataMember* p = (
const TDataMember*)
i->Next(); ) {
203 for (unique_ptr<TIterator>
i(cls.
getClass()->GetListOfDataMembers()->MakeIterator());
const TDataMember* p = (
const TDataMember*)
i->Next(); ) {
209 if (js.contains(p->GetName()))
221 namespace JDATABASE {}
222 namespace JPP {
using namespace JDATABASE; }
224 namespace JDATABASE {
static const char * getTypename()
Get typename for given template class.
virtual void to_json(json &js, const void *p) const override
ROOT class for reading object.
JSonDictionary()
Default constructor.
friend void to_json(json &js, const T &object)
Convert object to JSon.
Wrapper class to read string until end-of-line.
virtual void from_json(const json &js, void *p) const override
friend void from_json(const json &js, T &object)
Convert JSon to object/.
const char * getTypename() const
Get type name.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
void from_json(const json &js, JDBString &object)
Convert JSon to database string.
Auxiliary class for a type holder.
Assigment implementation.
virtual void from_json(const json &js, void *p) const =0
Auxiliary base class for JSon I/O based on ROOT dictionary.
pointer_type getAddress() const
Get address.
do set_variable OUTPUT_DIRECTORY $WORKDIR T
void operator()(const JLANG::JType< T > &type)
Add data type.
Exception when parsing a value.
JRootAddressableClass get(const TDataMember &data_member) const
Get addressable class of given data member.
Type list of primitive data types.
TClass * getClass() const
Get class.
static data_type & getInstance()
Get unique instance of template class.
then set_variable DETECTOR set_variable OUTPUT_FILE set_variable DAQ_FILE set_variable PMT_FILE else fatal Wrong number of arguments fi JPrintTree f $DAQ_FILE type
void to_json(json &js, const JDBString &object)
Convert database string to JSon.
virtual void to_json(json &js, const void *p) const =0
static bool is_static(const TDataMember &data_member)
Check if data member is static.
ROOT class for writing object.