ROOT logo
#ifndef HPARAMLIST_H
#define HPARAMLIST_H

#include "TNamed.h"
#include "TString.h"
#include "TArrayI.h"
#include "TArrayC.h"
#include "TArrayF.h"
#include "TArrayD.h"
#include "TList.h"
#include "TFile.h"
#include "TROOT.h"

class HParamObj : public TNamed {
protected:
  UChar_t* paramValue;    // Pointer to binary array
  Int_t arraySize;        // Size of binary array
  TString paramType;      // Type of parameter value or class name
  Bool_t basicType;       // kTRUE for C-types and C-type parameter arrays, kFALSE for classes
  Int_t bytesPerValue;    // number of bytes per value
  Int_t classVersion;     // Code version of classes stored as binary
  UChar_t* streamerInfo;  // Pointer to binary array container the streamer info
  Int_t streamerInfoSize; // Size of streamer info array
public:
  HParamObj(const Text_t* name="");
  HParamObj(HParamObj&);
  HParamObj(const Text_t*,Int_t);
  HParamObj(const Text_t*,UInt_t);
  HParamObj(const Text_t*,Float_t);
  HParamObj(const Text_t*,Double_t);
  HParamObj(const Text_t*,const Int_t*,const Int_t);
  HParamObj(const Text_t*,const UInt_t*,const Int_t);
  HParamObj(const Text_t*,const Float_t*,const Int_t);
  HParamObj(const Text_t*,const Double_t*,const Int_t);
  HParamObj(const Text_t*,const Text_t*);
  HParamObj(const Text_t*,const Char_t*,const Int_t);
  HParamObj(const Text_t*,const UChar_t*,const Int_t);
  ~HParamObj();
  void setParamType(const Text_t* t);
  UChar_t* setLength(Int_t l);
  void setParamValue(UChar_t*,const Int_t);
  void setClassVersion(const Int_t v) { classVersion=v; }
  UChar_t* setStreamerInfoSize(Int_t);
  void setStreamerInfo(UChar_t*,const Int_t);
  UChar_t* getParamValue() { return paramValue; }
  Bool_t isBasicType() { return basicType; }
  const char* getParamType() { return paramType.Data(); }
  Int_t getBytesPerValue() { return bytesPerValue; }
  Int_t getClassVersion() { return classVersion; }
  Int_t getLength() { return arraySize; }
  Int_t getNumParams();
  UChar_t* getStreamerInfo() { return streamerInfo; }
  Int_t getStreamerInfoSize() { return streamerInfoSize; }
  void print();  
protected:
  template <class type> void printData(type*,Int_t);
  void printHexData(UInt_t*,Int_t);

  ClassDef(HParamObj,0) // Class for binary parameter object (name + binary array)
};


class HParamList : public TObject {
protected:
  TList* paramList;      // List for parameters stored as string
  class HParamTFile : public TFile {
    public:
      HParamTFile() {
        // Create StreamerInfo index
        Int_t lenIndex = gROOT->GetListOfStreamerInfo()->GetSize()+1;
        if (lenIndex < 5000) lenIndex = 5000;
        fClassIndex = new TArrayC(lenIndex);
      }
      ~HParamTFile() {
        delete fClassIndex;
        fClassIndex=0;
      }
  };
public:
  HParamList();
  ~HParamList();
  void add(HParamObj&);
  void add(const Text_t*,const Text_t*);
  void add(const Text_t*,Int_t);
  void add(const Text_t*,UInt_t);
  void add(const Text_t*,Float_t);
  void add(const Text_t*,Double_t);
  void add(const Text_t*,TArrayI&);
  void add(const Text_t*,TArrayC&);
  void add(const Text_t*,TArrayF&);
  void add(const Text_t*,TArrayD&);
  void add(const Text_t*,const UChar_t*,const Int_t);
  void add(const Text_t*,const Int_t*,const Int_t);
  void add(const Text_t*,const UInt_t*,const Int_t);
  void add(const Text_t*,const Float_t*,const Int_t);
  void add(const Text_t*,const Double_t*,const Int_t);
  void addObject(const Text_t*,TObject*);
  Bool_t fill(const Text_t*,Text_t*,const Int_t);
  Bool_t fill(const Text_t*,Int_t*,const Int_t nValues=1);  
  Bool_t fill(const Text_t*,UInt_t*,const Int_t nValues=1);  
  Bool_t fill(const Text_t*,Float_t*,const Int_t nValues=1);  
  Bool_t fill(const Text_t*,Double_t*,const Int_t nValues=1);  
  Bool_t fill(const Text_t*,UChar_t*,const Int_t nValues=1);
  Bool_t fill(const Text_t*,TArrayI*);  
  Bool_t fill(const Text_t*,TArrayC*);  
  Bool_t fill(const Text_t*,TArrayF*);  
  Bool_t fill(const Text_t*,TArrayD*);  
  Bool_t fillObject(const Text_t*,TObject*);
  Int_t replace(const Text_t*,UChar_t*);
  Int_t replace(const Text_t*,Int_t*);
  Int_t replace(const Text_t*,UInt_t*);
  Int_t replace(const Text_t*,Float_t*);
  Int_t replace(const Text_t*,Double_t*);
  void print();
  HParamObj* find(const Text_t* name) {
    return (HParamObj*)paramList->FindObject(name);
  }
  TList* getList() { return paramList; }
  ClassDef(HParamList,0) // Class for lists of parameters (of type HParamObj)
};

#endif  /* !HPARAMLIST_H */
 
 hparamlist.h:1
 hparamlist.h:2
 hparamlist.h:3
 hparamlist.h:4
 hparamlist.h:5
 hparamlist.h:6
 hparamlist.h:7
 hparamlist.h:8
 hparamlist.h:9
 hparamlist.h:10
 hparamlist.h:11
 hparamlist.h:12
 hparamlist.h:13
 hparamlist.h:14
 hparamlist.h:15
 hparamlist.h:16
 hparamlist.h:17
 hparamlist.h:18
 hparamlist.h:19
 hparamlist.h:20
 hparamlist.h:21
 hparamlist.h:22
 hparamlist.h:23
 hparamlist.h:24
 hparamlist.h:25
 hparamlist.h:26
 hparamlist.h:27
 hparamlist.h:28
 hparamlist.h:29
 hparamlist.h:30
 hparamlist.h:31
 hparamlist.h:32
 hparamlist.h:33
 hparamlist.h:34
 hparamlist.h:35
 hparamlist.h:36
 hparamlist.h:37
 hparamlist.h:38
 hparamlist.h:39
 hparamlist.h:40
 hparamlist.h:41
 hparamlist.h:42
 hparamlist.h:43
 hparamlist.h:44
 hparamlist.h:45
 hparamlist.h:46
 hparamlist.h:47
 hparamlist.h:48
 hparamlist.h:49
 hparamlist.h:50
 hparamlist.h:51
 hparamlist.h:52
 hparamlist.h:53
 hparamlist.h:54
 hparamlist.h:55
 hparamlist.h:56
 hparamlist.h:57
 hparamlist.h:58
 hparamlist.h:59
 hparamlist.h:60
 hparamlist.h:61
 hparamlist.h:62
 hparamlist.h:63
 hparamlist.h:64
 hparamlist.h:65
 hparamlist.h:66
 hparamlist.h:67
 hparamlist.h:68
 hparamlist.h:69
 hparamlist.h:70
 hparamlist.h:71
 hparamlist.h:72
 hparamlist.h:73
 hparamlist.h:74
 hparamlist.h:75
 hparamlist.h:76
 hparamlist.h:77
 hparamlist.h:78
 hparamlist.h:79
 hparamlist.h:80
 hparamlist.h:81
 hparamlist.h:82
 hparamlist.h:83
 hparamlist.h:84
 hparamlist.h:85
 hparamlist.h:86
 hparamlist.h:87
 hparamlist.h:88
 hparamlist.h:89
 hparamlist.h:90
 hparamlist.h:91
 hparamlist.h:92
 hparamlist.h:93
 hparamlist.h:94
 hparamlist.h:95
 hparamlist.h:96
 hparamlist.h:97
 hparamlist.h:98
 hparamlist.h:99
 hparamlist.h:100
 hparamlist.h:101
 hparamlist.h:102
 hparamlist.h:103
 hparamlist.h:104
 hparamlist.h:105
 hparamlist.h:106
 hparamlist.h:107
 hparamlist.h:108
 hparamlist.h:109
 hparamlist.h:110
 hparamlist.h:111
 hparamlist.h:112
 hparamlist.h:113
 hparamlist.h:114
 hparamlist.h:115
 hparamlist.h:116
 hparamlist.h:117
 hparamlist.h:118
 hparamlist.h:119
 hparamlist.h:120
 hparamlist.h:121
 hparamlist.h:122
 hparamlist.h:123