00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TROOT
00013 #define ROOT_TROOT
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROOT_TDirectory
00029 #include "TDirectory.h"
00030 #endif
00031 #ifndef ROOT_TList
00032 #include "TList.h"
00033 #endif
00034
00035 class TClass;
00036 class TCanvas;
00037 class TColor;
00038 class TDataType;
00039 class TFile;
00040 class TStyle;
00041 class TVirtualPad;
00042 class TApplication;
00043 class TInterpreter;
00044 class TBrowser;
00045 class TGlobal;
00046 class TFunction;
00047 class TFolder;
00048 class TPluginManager;
00049 class TProcessUUID;
00050 class TClassGenerator;
00051 class TVirtualMutex;
00052
00053
00054
00055 R__EXTERN TVirtualMutex *gROOTMutex;
00056
00057 class TROOT : public TDirectory {
00058
00059 friend class TCint;
00060 friend class TCling;
00061
00062 private:
00063 Int_t fLineIsProcessing;
00064
00065 static Int_t fgDirLevel;
00066 static Bool_t fgRootInit;
00067 static Bool_t fgMemCheck;
00068
00069 TROOT(const TROOT&);
00070 TROOT& operator=(const TROOT&);
00071
00072 protected:
00073 TString fConfigOptions;
00074 TString fConfigFeatures;
00075 TString fVersion;
00076 Int_t fVersionInt;
00077 Int_t fVersionCode;
00078 Int_t fVersionDate;
00079 Int_t fVersionTime;
00080 Int_t fBuiltDate;
00081 Int_t fBuiltTime;
00082 Int_t fSvnRevision;
00083 TString fSvnBranch;
00084 TString fSvnDate;
00085 Int_t fTimer;
00086 TApplication *fApplication;
00087 TInterpreter *fInterpreter;
00088 Bool_t fBatch;
00089 Bool_t fEditHistograms;
00090 Bool_t fFromPopUp;
00091 Bool_t fMustClean;
00092 Bool_t fReadingObject;
00093 Bool_t fForceStyle;
00094 Bool_t fInterrupt;
00095 Bool_t fEscape;
00096 Bool_t fExecutingMacro;
00097 Int_t fEditorMode;
00098 const TObject *fPrimitive;
00099 TVirtualPad *fSelectPad;
00100 TCollection *fClasses;
00101 TCollection *fTypes;
00102 TCollection *fGlobals;
00103 TCollection *fGlobalFunctions;
00104 TSeqCollection *fFiles;
00105 TSeqCollection *fMappedFiles;
00106 TSeqCollection *fSockets;
00107 TSeqCollection *fCanvases;
00108 TSeqCollection *fStyles;
00109 TCollection *fFunctions;
00110 TSeqCollection *fTasks;
00111 TSeqCollection *fColors;
00112 TSeqCollection *fGeometries;
00113 TSeqCollection *fBrowsers;
00114 TSeqCollection *fSpecials;
00115 TSeqCollection *fCleanups;
00116 TSeqCollection *fMessageHandlers;
00117 TSeqCollection *fStreamerInfo;
00118 TCollection *fClassGenerators;
00119 TSeqCollection *fSecContexts;
00120 TSeqCollection *fProofs;
00121 TSeqCollection *fClipboard;
00122 TSeqCollection *fDataSets;
00123 TProcessUUID *fUUIDs;
00124 TFolder *fRootFolder;
00125 TList *fBrowsables;
00126 TPluginManager *fPluginManager;
00127 TString fCutClassName;
00128 TString fDefCanvasName;
00129
00130 TROOT();
00131 void InitSystem();
00132 void InitThreads();
00133 void ReadSvnInfo();
00134 void *operator new(size_t l) { return TObject::operator new(l); }
00135
00136 public:
00137 TROOT(const char *name, const char *title, VoidFuncPtr_t *initfunc = 0);
00138 virtual ~TROOT();
00139 void AddClass(TClass *cl);
00140 void AddClassGenerator(TClassGenerator *gen);
00141 void Browse(TBrowser *b);
00142 Bool_t ClassSaved(TClass *cl);
00143 virtual TObject *FindObject(const char *name) const;
00144 virtual TObject *FindObject(const TObject *obj) const;
00145 virtual TObject *FindObjectAny(const char *name) const;
00146 TObject *FindSpecialObject(const char *name, void *&where);
00147 const char *FindObjectClassName(const char *name) const;
00148 const char *FindObjectPathName(const TObject *obj) const;
00149 TClass *FindSTLClass(const char *name, Bool_t load, Bool_t silent = kFALSE) const;
00150 void ForceStyle(Bool_t force = kTRUE) { fForceStyle = force; }
00151 Bool_t FromPopUp() const { return fFromPopUp; }
00152 TPluginManager *GetPluginManager() const { return fPluginManager; }
00153 TApplication *GetApplication() const { return fApplication; }
00154 TInterpreter *GetInterpreter() const { return fInterpreter; }
00155 TClass *GetClass(const char *name, Bool_t load = kTRUE, Bool_t silent = kFALSE) const;
00156 TClass *GetClass(const type_info &typeinfo, Bool_t load = kTRUE, Bool_t silent = kFALSE) const;
00157 TColor *GetColor(Int_t color) const;
00158 const char *GetConfigOptions() const { return fConfigOptions; }
00159 const char *GetConfigFeatures() const { return fConfigFeatures; }
00160 const char *GetCutClassName() const { return fCutClassName; }
00161 const char *GetDefCanvasName() const { return fDefCanvasName; }
00162 Bool_t GetEditHistograms() const { return fEditHistograms; }
00163 Int_t GetEditorMode() const { return fEditorMode; }
00164 Bool_t GetForceStyle() const { return fForceStyle; }
00165 Int_t GetBuiltDate() const { return fBuiltDate; }
00166 Int_t GetBuiltTime() const { return fBuiltTime; }
00167 Int_t GetSvnRevision() const { return fSvnRevision; }
00168 const char *GetSvnBranch() const { return fSvnBranch; }
00169 const char *GetSvnDate();
00170 Int_t GetVersionDate() const { return fVersionDate; }
00171 Int_t GetVersionTime() const { return fVersionTime; }
00172 Int_t GetVersionInt() const { return fVersionInt; }
00173 Int_t GetVersionCode() const { return fVersionCode; }
00174 const char *GetVersion() const { return fVersion; }
00175 TCollection *GetListOfClasses() const { return fClasses; }
00176 TSeqCollection *GetListOfColors() const { return fColors; }
00177 TCollection *GetListOfTypes(Bool_t load = kFALSE);
00178 TCollection *GetListOfGlobals(Bool_t load = kFALSE);
00179 TCollection *GetListOfGlobalFunctions(Bool_t load = kFALSE);
00180 TSeqCollection *GetListOfFiles() const { return fFiles; }
00181 TSeqCollection *GetListOfMappedFiles() const { return fMappedFiles; }
00182 TSeqCollection *GetListOfSockets() const { return fSockets; }
00183 TSeqCollection *GetListOfCanvases() const { return fCanvases; }
00184 TSeqCollection *GetListOfStyles() const { return fStyles; }
00185 TCollection *GetListOfFunctions() const { return fFunctions; }
00186 TSeqCollection *GetListOfGeometries() const { return fGeometries; }
00187 TSeqCollection *GetListOfBrowsers() const { return fBrowsers; }
00188 TSeqCollection *GetListOfSpecials() const { return fSpecials; }
00189 TSeqCollection *GetListOfTasks() const { return fTasks; }
00190 TSeqCollection *GetListOfCleanups() const { return fCleanups; }
00191 TSeqCollection *GetListOfStreamerInfo() const { return fStreamerInfo; }
00192 TSeqCollection *GetListOfMessageHandlers() const { return fMessageHandlers; }
00193 TCollection *GetListOfClassGenerators() const { return fClassGenerators; }
00194 TSeqCollection *GetListOfSecContexts() const { return fSecContexts; }
00195 TSeqCollection *GetListOfProofs() const { return fProofs; }
00196 TSeqCollection *GetClipboard() const { return fClipboard; }
00197 TSeqCollection *GetListOfDataSets() const { return fDataSets; }
00198 TList *GetListOfBrowsables() const { return fBrowsables; }
00199 TDataType *GetType(const char *name, Bool_t load = kFALSE) const;
00200 TFile *GetFile() const { if (gDirectory != this) return gDirectory->GetFile(); else return 0;}
00201 TFile *GetFile(const char *name) const;
00202 TStyle *GetStyle(const char *name) const;
00203 TObject *GetFunction(const char *name) const;
00204 TGlobal *GetGlobal(const char *name, Bool_t load = kFALSE) const;
00205 TGlobal *GetGlobal(const TObject *obj, Bool_t load = kFALSE) const;
00206 TFunction *GetGlobalFunction(const char *name, const char *params = 0, Bool_t load = kFALSE);
00207 TFunction *GetGlobalFunctionWithPrototype(const char *name, const char *proto = 0, Bool_t load = kFALSE);
00208 TObject *GetGeometry(const char *name) const;
00209 const TObject *GetSelectedPrimitive() const { return fPrimitive; }
00210 TVirtualPad *GetSelectedPad() const { return fSelectPad; }
00211 Int_t GetNclasses() const { return fClasses->GetSize(); }
00212 Int_t GetNtypes() const { return fTypes->GetSize(); }
00213 TFolder *GetRootFolder() const { return fRootFolder; }
00214 TProcessUUID *GetUUIDs() const { return fUUIDs; }
00215 void Idle(UInt_t idleTimeInSec, const char *command = 0);
00216 Int_t IgnoreInclude(const char *fname, const char *expandedfname);
00217 Bool_t IsBatch() const { return fBatch; }
00218 Bool_t IsExecutingMacro() const { return fExecutingMacro; }
00219 Bool_t IsFolder() const { return kTRUE; }
00220 Bool_t IsInterrupted() const { return fInterrupt; }
00221 Bool_t IsEscaped() const { return fEscape; }
00222 Bool_t IsLineProcessing() const { return fLineIsProcessing ? kTRUE : kFALSE; }
00223 Bool_t IsProofServ() const { return fName == "proofserv" ? kTRUE : kFALSE; }
00224 void ls(Option_t *option = "") const;
00225 Int_t LoadClass(const char *classname, const char *libname, Bool_t check = kFALSE);
00226 TClass *LoadClass(const char *name, Bool_t silent = kFALSE) const;
00227 Int_t LoadMacro(const char *filename, Int_t *error = 0, Bool_t check = kFALSE);
00228 Long_t Macro(const char *filename, Int_t *error = 0, Bool_t padUpdate = kTRUE);
00229 TCanvas *MakeDefCanvas() const;
00230 void Message(Int_t id, const TObject *obj);
00231 Bool_t MustClean() const { return fMustClean; }
00232 Long_t ProcessLine(const char *line, Int_t *error = 0);
00233 Long_t ProcessLineSync(const char *line, Int_t *error = 0);
00234 Long_t ProcessLineFast(const char *line, Int_t *error = 0);
00235 Bool_t ReadingObject() const { return fReadingObject; }
00236 void RefreshBrowsers();
00237 void RemoveClass(TClass *);
00238 void Reset(Option_t *option="");
00239 void SaveContext();
00240 void SetApplication(TApplication *app) { fApplication = app; }
00241 void SetBatch(Bool_t batch = kTRUE) { fBatch = batch; }
00242 void SetCutClassName(const char *name = "TCutG");
00243 void SetDefCanvasName(const char *name = "c1") { fDefCanvasName = name; }
00244 void SetEditHistograms(Bool_t flag = kTRUE) { fEditHistograms = flag; }
00245 void SetEditorMode(const char *mode = "");
00246 void SetExecutingMacro(Bool_t flag = kTRUE) { fExecutingMacro = flag; }
00247 void SetFromPopUp(Bool_t flag = kTRUE) { fFromPopUp = flag; }
00248 void SetInterrupt(Bool_t flag = kTRUE) { fInterrupt = flag; }
00249 void SetEscape(Bool_t flag = kTRUE) { fEscape = flag; }
00250 void SetLineIsProcessing() { fLineIsProcessing++; }
00251 void SetLineHasBeenProcessed() { if (fLineIsProcessing) fLineIsProcessing--; }
00252 void SetReadingObject(Bool_t flag = kTRUE) { fReadingObject = flag; }
00253 void SetMustClean(Bool_t flag = kTRUE) { fMustClean=flag; }
00254 void SetSelectedPrimitive(const TObject *obj) { fPrimitive = obj; }
00255 void SetSelectedPad(TVirtualPad *pad) { fSelectPad = pad; }
00256 void SetStyle(const char *stylename = "Default");
00257 void Time(Int_t casetime=1) { fTimer = casetime; }
00258 Int_t Timer() const { return fTimer; }
00259
00260
00261 static Int_t DecreaseDirLevel();
00262 static Int_t GetDirLevel();
00263 static const char *GetMacroPath();
00264 static void SetMacroPath(const char *newpath);
00265 static Int_t IncreaseDirLevel();
00266 static void IndentLevel();
00267 static Bool_t Initialized();
00268 static Bool_t MemCheck();
00269 static void SetDirLevel(Int_t level = 0);
00270 static Int_t ConvertVersionCode2Int(Int_t code);
00271 static Int_t ConvertVersionInt2Code(Int_t v);
00272 static Int_t RootVersionCode();
00273
00274 ClassDef(TROOT,0)
00275 };
00276
00277
00278 R__EXTERN TROOT *gROOT;
00279 namespace ROOT {
00280 TROOT *GetROOT();
00281 }
00282 #endif