ROOT logo
/*
 * AliEMCALConfigurationObject.h
 *
 *  Created on: 06.11.2014
 *      Author: markusfasel
 */

#ifndef _ALIJSONDATA_H_
#define _ALIJSONDATA_H_

#include <ostream>
#include <TNamed.h>

/************************************************************
 *
 * Declaration of wrapper types used in the JSON handling
 *
 * **********************************************************/

class AliJSONValue : public TObject {
public:
  AliJSONValue() {}
  virtual ~AliJSONValue() {}

  virtual const char *ToString() const = 0;

  ClassDef(AliJSONValue,1);
};

class AliJSONInt : public AliJSONValue{
public:
  AliJSONInt(Int_t val):
    AliJSONValue(),
    fValue(val)
  {}
  virtual ~AliJSONInt() {}

  void SetValue(Int_t value) { fValue = value; }
  Int_t GetValue() const { return fValue; }

  virtual const char *ToString() const ;
private:
  Int_t fValue;

  ClassDef(AliJSONInt,1);
};

class AliJSONFloat : public AliJSONValue{
public:
  AliJSONFloat(Float_t val):
    AliJSONValue(),
    fValue(val)
  {}
  virtual ~AliJSONFloat() {}

  void SetValue(Float_t value) { fValue = value; }
  Float_t GetValue() const { return fValue; }

  virtual const char *ToString() const;
private:
  Float_t fValue;

  ClassDef(AliJSONFloat,1);
};

class AliJSONDouble : public AliJSONValue{
public:
  AliJSONDouble(Double_t val):
    AliJSONValue(),
    fValue(val)
  {}
  virtual ~AliJSONDouble() {}

  void SetValue(Double_t value) { fValue = value; }
  Double_t GetValue() const { return fValue; }

  virtual const char *ToString() const;
private:
  Double_t fValue;

  ClassDef(AliJSONDouble,1);
};

class AliJSONBool : public AliJSONValue{
public:
  AliJSONBool(Bool_t val):
    AliJSONValue(),
    fValue(val)
  {}
  virtual ~AliJSONBool() {}

  void SetValue(Bool_t value) { fValue = value; }
  Bool_t GetValue() const { return fValue; }

  virtual const char *ToString() const { return fValue ? "true" : "false"; }
private:
  Bool_t fValue;

  ClassDef(AliJSONBool,1);
};

class AliJSONString : public AliJSONValue{
public:
  AliJSONString(const char *val):
    AliJSONValue(),
    fValue(val)
  {}
  virtual ~AliJSONString() {}

  void SetValue(const char * value) { fValue = value; }
  const char * GetValue() const { return fValue; }

  virtual const char *ToString() const { return fValue; }
private:
  TString fValue;

  ClassDef(AliJSONString,1);
};

/********************************************************************
 *                                                                  *
 * Declaration of the JSON key-value pair                           *
 *                                                                  *
 ********************************************************************/

class AliJSONData : public TNamed {
public:
  AliJSONData(const char *name, AliJSONValue *value):
    TNamed(name, ""),
    fValue(value)
  {}
  AliJSONData(const char *key, const char *value);

  virtual ~AliJSONData(){
    delete fValue;
  }

  void SetValue(AliJSONValue *val){
    if(fValue) delete fValue;
    fValue = val;
  }

  AliJSONValue *GetValue() const { return fValue; }
  const char *ToString() const;

protected:
  AliJSONData(const AliJSONData &ref);
  AliJSONData &operator=(const AliJSONData &ref);

  AliJSONValue *fValue;

  ClassDef(AliJSONData, 1);
};

std::ostream &operator<<(std::ostream &, const AliJSONValue &);
std::ostream &operator<<(std::ostream &, const AliJSONData &);

#endif /* _ALIJSONDATA_H_ */
 AliJSONData.h:1
 AliJSONData.h:2
 AliJSONData.h:3
 AliJSONData.h:4
 AliJSONData.h:5
 AliJSONData.h:6
 AliJSONData.h:7
 AliJSONData.h:8
 AliJSONData.h:9
 AliJSONData.h:10
 AliJSONData.h:11
 AliJSONData.h:12
 AliJSONData.h:13
 AliJSONData.h:14
 AliJSONData.h:15
 AliJSONData.h:16
 AliJSONData.h:17
 AliJSONData.h:18
 AliJSONData.h:19
 AliJSONData.h:20
 AliJSONData.h:21
 AliJSONData.h:22
 AliJSONData.h:23
 AliJSONData.h:24
 AliJSONData.h:25
 AliJSONData.h:26
 AliJSONData.h:27
 AliJSONData.h:28
 AliJSONData.h:29
 AliJSONData.h:30
 AliJSONData.h:31
 AliJSONData.h:32
 AliJSONData.h:33
 AliJSONData.h:34
 AliJSONData.h:35
 AliJSONData.h:36
 AliJSONData.h:37
 AliJSONData.h:38
 AliJSONData.h:39
 AliJSONData.h:40
 AliJSONData.h:41
 AliJSONData.h:42
 AliJSONData.h:43
 AliJSONData.h:44
 AliJSONData.h:45
 AliJSONData.h:46
 AliJSONData.h:47
 AliJSONData.h:48
 AliJSONData.h:49
 AliJSONData.h:50
 AliJSONData.h:51
 AliJSONData.h:52
 AliJSONData.h:53
 AliJSONData.h:54
 AliJSONData.h:55
 AliJSONData.h:56
 AliJSONData.h:57
 AliJSONData.h:58
 AliJSONData.h:59
 AliJSONData.h:60
 AliJSONData.h:61
 AliJSONData.h:62
 AliJSONData.h:63
 AliJSONData.h:64
 AliJSONData.h:65
 AliJSONData.h:66
 AliJSONData.h:67
 AliJSONData.h:68
 AliJSONData.h:69
 AliJSONData.h:70
 AliJSONData.h:71
 AliJSONData.h:72
 AliJSONData.h:73
 AliJSONData.h:74
 AliJSONData.h:75
 AliJSONData.h:76
 AliJSONData.h:77
 AliJSONData.h:78
 AliJSONData.h:79
 AliJSONData.h:80
 AliJSONData.h:81
 AliJSONData.h:82
 AliJSONData.h:83
 AliJSONData.h:84
 AliJSONData.h:85
 AliJSONData.h:86
 AliJSONData.h:87
 AliJSONData.h:88
 AliJSONData.h:89
 AliJSONData.h:90
 AliJSONData.h:91
 AliJSONData.h:92
 AliJSONData.h:93
 AliJSONData.h:94
 AliJSONData.h:95
 AliJSONData.h:96
 AliJSONData.h:97
 AliJSONData.h:98
 AliJSONData.h:99
 AliJSONData.h:100
 AliJSONData.h:101
 AliJSONData.h:102
 AliJSONData.h:103
 AliJSONData.h:104
 AliJSONData.h:105
 AliJSONData.h:106
 AliJSONData.h:107
 AliJSONData.h:108
 AliJSONData.h:109
 AliJSONData.h:110
 AliJSONData.h:111
 AliJSONData.h:112
 AliJSONData.h:113
 AliJSONData.h:114
 AliJSONData.h:115
 AliJSONData.h:116
 AliJSONData.h:117
 AliJSONData.h:118
 AliJSONData.h:119
 AliJSONData.h:120
 AliJSONData.h:121
 AliJSONData.h:122
 AliJSONData.h:123
 AliJSONData.h:124
 AliJSONData.h:125
 AliJSONData.h:126
 AliJSONData.h:127
 AliJSONData.h:128
 AliJSONData.h:129
 AliJSONData.h:130
 AliJSONData.h:131
 AliJSONData.h:132
 AliJSONData.h:133
 AliJSONData.h:134
 AliJSONData.h:135
 AliJSONData.h:136
 AliJSONData.h:137
 AliJSONData.h:138
 AliJSONData.h:139
 AliJSONData.h:140
 AliJSONData.h:141
 AliJSONData.h:142
 AliJSONData.h:143
 AliJSONData.h:144
 AliJSONData.h:145
 AliJSONData.h:146
 AliJSONData.h:147
 AliJSONData.h:148
 AliJSONData.h:149
 AliJSONData.h:150
 AliJSONData.h:151
 AliJSONData.h:152
 AliJSONData.h:153
 AliJSONData.h:154
 AliJSONData.h:155
 AliJSONData.h:156
 AliJSONData.h:157
 AliJSONData.h:158