AliPhysics  d565ceb (d565ceb)
AliJSONData.h
Go to the documentation of this file.
1 /*
2  * AliEMCALConfigurationObject.h
3  *
4  * Created on: 06.11.2014
5  * Author: markusfasel
6  */
7 
8 #ifndef _ALIJSONDATA_H_
9 #define _ALIJSONDATA_H_
10 
11 #include <ostream>
12 #include <string>
13 #include <TNamed.h>
14 #include <TString.h>
15 
16 /************************************************************
17  *
18  * Declaration of wrapper types used in the JSON handling
19  *
20  * **********************************************************/
21 
22 class AliJSONValue : public TObject {
23 public:
25  virtual ~AliJSONValue() {}
26 
27  virtual std::string ToString() const = 0;
28 
29  ClassDef(AliJSONValue,1);
30 };
31 
32 class AliJSONInt : public AliJSONValue{
33 public:
35  AliJSONValue(),
36  fValue(val)
37  {}
38  virtual ~AliJSONInt() {}
39 
40  void SetValue(Int_t value) { fValue = value; }
41  Int_t GetValue() const { return fValue; }
42 
43  virtual std::string ToString() const ;
44 private:
46 
47  ClassDef(AliJSONInt,1);
48 };
49 
50 class AliJSONFloat : public AliJSONValue{
51 public:
53  AliJSONValue(),
54  fValue(val)
55  {}
56  virtual ~AliJSONFloat() {}
57 
58  void SetValue(Float_t value) { fValue = value; }
59  Float_t GetValue() const { return fValue; }
60 
61  virtual std::string ToString() const;
62 private:
64 
65  ClassDef(AliJSONFloat,1);
66 };
67 
68 class AliJSONDouble : public AliJSONValue{
69 public:
71  AliJSONValue(),
72  fValue(val)
73  {}
74  virtual ~AliJSONDouble() {}
75 
76  void SetValue(Double_t value) { fValue = value; }
77  Double_t GetValue() const { return fValue; }
78 
79  virtual std::string ToString() const;
80 private:
82 
83  ClassDef(AliJSONDouble,1);
84 };
85 
86 class AliJSONBool : public AliJSONValue{
87 public:
89  AliJSONValue(),
90  fValue(val)
91  {}
92  virtual ~AliJSONBool() {}
93 
94  void SetValue(Bool_t value) { fValue = value; }
95  Bool_t GetValue() const { return fValue; }
96 
97  virtual std::string ToString() const { return fValue ? "true" : "false"; }
98 private:
100 
101  ClassDef(AliJSONBool,1);
102 };
103 
105 public:
106  AliJSONString(const char *val):
107  AliJSONValue(),
108  fValue(val)
109  {}
110  virtual ~AliJSONString() {}
111 
112  void SetValue(const char * value) { fValue = value; }
113  const char * GetValue() const { return fValue; }
114 
115  virtual std::string ToString() const { return std::string(fValue.Data()); }
116 private:
118 
119  ClassDef(AliJSONString,1);
120 };
121 
122 /********************************************************************
123  * *
124  * Declaration of the JSON key-value pair *
125  * *
126  ********************************************************************/
127 
128 class AliJSONData : public TNamed {
129 public:
130  AliJSONData(const char *name, AliJSONValue *value):
131  TNamed(name, ""),
132  fValue(value)
133  {}
134  AliJSONData(const char *key, const char *value);
135 
136  virtual ~AliJSONData(){
137  delete fValue;
138  }
139 
140  void SetValue(AliJSONValue *val){
141  if(fValue) delete fValue;
142  fValue = val;
143  }
144 
145  AliJSONValue *GetValue() const { return fValue; }
146  std::string ToString() const;
147 
148 protected:
149  AliJSONData(const AliJSONData &ref);
150  AliJSONData &operator=(const AliJSONData &ref);
151 
153 
154  ClassDef(AliJSONData, 1);
155 };
156 
157 std::ostream &operator<<(std::ostream &, const AliJSONValue &);
158 std::ostream &operator<<(std::ostream &, const AliJSONData &);
159 
160 #endif /* _ALIJSONDATA_H_ */
Bool_t GetValue() const
Definition: AliJSONData.h:95
double Double_t
Definition: External.C:58
AliJSONFloat(Float_t val)
Definition: AliJSONData.h:52
TString fValue
Definition: AliJSONData.h:117
virtual std::string ToString() const
Definition: AliJSONData.h:115
Int_t fValue
Definition: AliJSONData.h:45
AliJSONData(const char *name, AliJSONValue *value)
Definition: AliJSONData.h:130
virtual ~AliJSONValue()
Definition: AliJSONData.h:25
Float_t GetValue() const
Definition: AliJSONData.h:59
virtual ~AliJSONInt()
Definition: AliJSONData.h:38
void SetValue(Bool_t value)
Definition: AliJSONData.h:94
Float_t fValue
Definition: AliJSONData.h:63
void SetValue(AliJSONValue *val)
Definition: AliJSONData.h:140
AliJSONDouble(Double_t val)
Definition: AliJSONData.h:70
AliJSONValue * GetValue() const
Definition: AliJSONData.h:145
virtual ~AliJSONString()
Definition: AliJSONData.h:110
int Int_t
Definition: External.C:63
void SetValue(Double_t value)
Definition: AliJSONData.h:76
Double_t GetValue() const
Definition: AliJSONData.h:77
virtual ~AliJSONData()
Definition: AliJSONData.h:136
const char * GetValue() const
Definition: AliJSONData.h:113
float Float_t
Definition: External.C:68
AliJSONValue * fValue
Definition: AliJSONData.h:152
void SetValue(const char *value)
Definition: AliJSONData.h:112
AliJSONString(const char *val)
Definition: AliJSONData.h:106
AliJSONInt(Int_t val)
Definition: AliJSONData.h:34
Int_t GetValue() const
Definition: AliJSONData.h:41
AliJSONBool(Bool_t val)
Definition: AliJSONData.h:88
void SetValue(Float_t value)
Definition: AliJSONData.h:58
void SetValue(Int_t value)
Definition: AliJSONData.h:40
Double_t fValue
Definition: AliJSONData.h:81
virtual std::string ToString() const
Definition: AliJSONData.h:97
virtual ~AliJSONBool()
Definition: AliJSONData.h:92
virtual std::string ToString() const =0
virtual ~AliJSONDouble()
Definition: AliJSONData.h:74
bool Bool_t
Definition: External.C:53
virtual ~AliJSONFloat()
Definition: AliJSONData.h:56
std::ostream & operator<<(std::ostream &, const AliJSONValue &)
Definition: AliJSONData.cxx:62
Bool_t fValue
Definition: AliJSONData.h:99