library: libCore #include "TEnv.h"

# TEnv

class description - source file - inheritance tree (.pdf)

## class TEnv : public TObject

| Inheritance Chart:
`TObject`
| <- | `TEnv` |

        private:

          const char* Getvalue(const char* name) const

        public:

                              TEnv(const char* name = "")
                              TEnv(const TEnv&)
                      virtual ~TEnv()
               static TClass* Class()
                       Bool_t Defined(const char* name)
                   THashList* GetTable() const
                virtual Int_t GetValue(const char* name, Int_t dflt)
             virtual Double_t GetValue(const char* name, Double_t dflt)
          virtual const char* GetValue(const char* name, const char* dflt) const
              virtual TClass* IsA() const
             virtual TEnvRec* Lookup(const char* n)
                        TEnv& operator=(const TEnv&)
                 virtual void Print(Option_t* option = "") const
                 virtual void PrintEnv(EEnvLevel level = kEnvAll) const
                 virtual void ReadFile(const char* fname, EEnvLevel level)
                 virtual void Save()
                 virtual void SaveLevel(EEnvLevel level)
                 virtual void SetValue(const char* name, const char* value, EEnvLevel level = kEnvChange, const char* type = "0")
                 virtual void SetValue(const char* name, EEnvLevel level = kEnvChange)
                 virtual void SetValue(const char* name, Int_t value)
                 virtual void SetValue(const char* name, Double_t value)
                 virtual void ShowMembers(TMemberInspector& insp, char* parent)
                 virtual void Streamer(TBuffer& b)
                         void StreamerNVirtual(TBuffer& b)

### Data Members

        private:

          THashList* fTable
             TString fRcName

## Class Description

     TEnv

     The TEnv class reads a config file, by default .rootrc. Three types
     of .rootrc files are read: global, user and local files. The global
     file resides in $ROOTSYS/etc, the user file in ~/ and the local file
     in the current working directory.
     The format of the .rootrc file is similar to the .Xdefaults format:

       [+]<SystemName>.<RootName|ProgName>.<name>[(type)]:  <value>

     Where <SystemName> is either Unix, WinNT, MacOS or Vms,
     <RootName> the name as given in the TApplication ctor (or "RootApp"
     in case no explicit TApplication derived object was created),
     <ProgName> the current program name and <name> the resource name,
     with optionally a type specification. <value> can be either a
     string, an integer, a float/double or a boolean with the values
     TRUE, FALSE, ON, OFF, YES, NO, OK, NOT. Booleans will be returned as
     an integer 0 or 1. The options [+] allows the concatenation of
     values to the same resouce name.

     E.g.:

       Unix.Rint.Root.DynamicPath: .:$ROOTSYS/lib:~/lib
       myapp.Root.Debug:  FALSE
       TH.Root.Debug: YES
       *.Root.MemStat: 1

     <SystemName> and <ProgName> or <RootName> may be the wildcard "*".
     A # in the first column starts comment line.

     For the currently defined resources (and their default values) see
     $ROOTSYS/etc/system.rootrc.

     Note that the .rootrc config files contain the config for all ROOT
     based applications.

     To add new entries to a TEnv:
     TEnv env(".myfile");
     env.SetValue("myname","value");
     env.SaveLevel(kEnvLocal);

     All new entries will be saved in the file corresponding to the
     first SaveLevel() command.  If Save() is used, new entries go
     into the local file by default.

TEnv(const char *name)

     Create a resource table and read the (possibly) three resource files, i.e
     $ROOTSYS/system<name> (or ROOTETCDIR/system<name>), $HOME/<name> and
     ./<name>. ROOT always reads ".rootrc" (in TROOT::InitSystem()). You can
     read additional user defined resource files by creating addtional TEnv
     object.

~TEnv()

     Delete the resource table.

const char* Getvalue(const char *name)

     Returns the character value for a named resouce.

Int_t GetValue(const char *name, Int_t dflt)

     Returns the integer value for a resource. If the resource is not found
     return the dflt value.

Double_t GetValue(const char *name, Double_t dflt)

     Returns the dobule value for a resource. If the resource is not found
     return the dflt value.

const char* GetValue(const char *name, const char *dflt)

     Returns the character value for a named resouce. If the resource is
     not found the dflt value is returned.

TEnvRec* Lookup(const char *name)

     Loop over all resource records and return the one with name.
     Return 0 in case name is not in the resoucre table.

void Print(Option_t *opt) const

     Print all resources or the global, user or local resources separately.

void PrintEnv(EEnvLevel level) const

     Print all resources for a certain level (global, user, local, changed).

void ReadFile(const char *fname, EEnvLevel level)

     Read and parse the resource file for a certain level.

void Save()

     Write the resource files for each level. The new files have the same
     name as the original files. The old files are renamed to *.bak.

void SaveLevel(EEnvLevel level)

     Write the resource file for a certain level.

void SetValue(const char *name, const char *value, EEnvLevel level, const char *type)

     Set the value of a resource or create a new resource.

void SetValue(const char *name, EEnvLevel level)

     Set the value of a resource or create a new resource.
     Use this method to set a resource like, "name=val".
     If just "name" is given it will be interpreted as "name=1".

void SetValue(const char *name, Int_t value)

     Set or create an integer resource value.

void SetValue(const char *name, double value)

     Set or create a double resource value.

### Inline Functions

             THashList* GetTable() const
                 Bool_t Defined(const char* name)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void Streamer(TBuffer& b)
                   void StreamerNVirtual(TBuffer& b)
                   TEnv TEnv(const TEnv&)
                  TEnv& operator=(const TEnv&)

Author: Fons Rademakers 22/09/95
Last update: root/base:$Name: $:$Id: TEnv.cxx,v 1.20 2005/06/10 22:28:51 rdm Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *