00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TEnv
00013 #define ROOT_TEnv
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061 #ifndef ROOT_TObject
00062 #include "TObject.h"
00063 #endif
00064 #ifndef ROOT_TString
00065 #include "TString.h"
00066 #endif
00067
00068 class THashList;
00069 class TEnv;
00070 class TEnvParser;
00071 class TReadEnvParser;
00072 class TWriteEnvParser;
00073
00074 enum EEnvLevel {
00075 kEnvGlobal,
00076 kEnvUser,
00077 kEnvLocal,
00078 kEnvChange,
00079 kEnvAll
00080 };
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 class TEnvRec : public TObject {
00092
00093 friend class TEnv;
00094 friend class TEnvParser;
00095 friend class TReadEnvParser;
00096 friend class TWriteEnvParser;
00097
00098 private:
00099 TString fName;
00100 TString fType;
00101 TString fValue;
00102 EEnvLevel fLevel;
00103 Bool_t fModified;
00104
00105 TEnvRec(const char *n, const char *v, const char *t, EEnvLevel l);
00106 Int_t Compare(const TObject *obj) const;
00107 void ChangeValue(const char *v, const char *t, EEnvLevel l,
00108 Bool_t append = kFALSE, Bool_t ignoredup = kFALSE);
00109 TString ExpandValue(const char *v);
00110
00111 public:
00112 TEnvRec(): fName(), fType(), fValue(), fLevel(kEnvAll), fModified(kTRUE) { }
00113 const char *GetName() const { return fName; }
00114 const char *GetValue() const { return fValue; }
00115 const char *GetType() const { return fType; }
00116 EEnvLevel GetLevel() const { return fLevel; }
00117 ULong_t Hash() const { return fName.Hash(); }
00118
00119 ClassDef(TEnvRec,2)
00120 };
00121
00122
00123
00124
00125
00126
00127
00128 class TEnv : public TObject {
00129
00130 private:
00131 THashList *fTable;
00132 TString fRcName;
00133 Bool_t fIgnoreDup;
00134
00135 TEnv(const TEnv&);
00136 TEnv& operator=(const TEnv&);
00137
00138 const char *Getvalue(const char *name);
00139
00140 public:
00141 TEnv(const char *name="");
00142 virtual ~TEnv();
00143
00144 THashList *GetTable() const { return fTable; }
00145 Bool_t Defined(const char *name)
00146 { return Getvalue(name) != 0; }
00147
00148 virtual const char *GetRcName() const { return fRcName; }
00149 virtual void SetRcName(const char *name) { fRcName = name; }
00150
00151 virtual Int_t GetValue(const char *name, Int_t dflt);
00152 virtual Double_t GetValue(const char *name, Double_t dflt);
00153 virtual const char *GetValue(const char *name, const char *dflt);
00154
00155 virtual void SetValue(const char *name, const char *value,
00156 EEnvLevel level = kEnvChange,
00157 const char *type = 0);
00158 virtual void SetValue(const char *name, EEnvLevel level = kEnvChange);
00159 virtual void SetValue(const char *name, Int_t value);
00160 virtual void SetValue(const char *name, Double_t value);
00161
00162 virtual TEnvRec *Lookup(const char *n);
00163 virtual Int_t ReadFile(const char *fname, EEnvLevel level);
00164 virtual Int_t WriteFile(const char *fname, EEnvLevel level = kEnvAll);
00165 virtual void Save();
00166 virtual void SaveLevel(EEnvLevel level);
00167 virtual void Print(Option_t *option="") const;
00168 virtual void PrintEnv(EEnvLevel level = kEnvAll) const;
00169 Bool_t IgnoreDuplicates(Bool_t ignore);
00170
00171 ClassDef(TEnv,2)
00172 };
00173
00174 R__EXTERN TEnv *gEnv;
00175
00176 #endif