Classdesc 3.44
polyJsonBase.h
1/*
2 @copyright Russell Standish 2000-2013
3 @author Russell Standish
4 This file is part of Classdesc
5
6 Open source licensed under the MIT license. See LICENSE for details.
7*/
8
9#ifndef CLASSDESC_POLYJSONBASE_H
10#define CLASSDESC_POLYJSONBASE_H
11
12
13namespace classdesc
14{
16 {
17 virtual void json_pack(json_pack_t&, const string&) const=0;
18 virtual void json_unpack(json_unpack_t&, const string&)=0;
19 virtual ~PolyJsonBase() {}
20 };
21
22 template <class T>
23 struct PolyJson: virtual public PolyJsonBase
24 {
25 void json_pack(json_pack_t& x, const string& d) const
26 {::json_pack(x,d,dynamic_cast<const T&>(*this));}
27
28 void json_unpack(json_unpack_t& x, const string& d)
29 {::json_unpack(x,d,static_cast<T&>(*this));}
30
31 };
32
33 template <> struct tn<PolyJsonBase>
34 {
35 static std::string name()
36 {return "classdesc::PolyJsonBase";}
37 };
38 template <class T> struct tn<PolyJson<T> >
39 {
40 static std::string name()
41 {return "classdesc::PolyJson<"+typeName<T>()+">";}
42 };
43
44#ifdef _CLASSDESC
45#pragma omit typeName PolyJsonBase
46#pragma omit typeName PolyJson<T>
47#endif
48}
49
50#endif
51
Definition json_pack_base.h:99
Contains definitions related to classdesc functionality.
Definition polyJsonBase.h:16
Definition polyJsonBase.h:24
Definition classdesc.h:571