24 /**************************************************************************/
25 // Exceptions, string functions
26 /**************************************************************************/
28 bool operator==(const TString& t, const std::string& s);
29 bool operator==(const std::string& s, const TString& t);
31 class Exc_t : public std::exception, public TString
35 Exc_t(const TString& s) : TString(s) {}
36 Exc_t(const char* s) : TString(s) {}
37 Exc_t(const std::string& s);
39 virtual ~Exc_t() throw () {}
41 virtual const char* what() const throw () { return Data(); }
46 Exc_t operator+(const Exc_t &s1, const std::string &s2);
47 Exc_t operator+(const Exc_t &s1, const TString &s2);
48 Exc_t operator+(const Exc_t &s1, const char *s2);
50 void WarnCaller(const TString& warning);
53 /**************************************************************************/
54 // Environment, Macro functions
55 /**************************************************************************/
57 void SetupEnvironment();
60 Bool_t CheckMacro(const Text_t* mac);
61 void AssertMacro(const Text_t* mac);
62 void Macro(const Text_t* mac);
63 void LoadMacro(const Text_t* mac);
66 /**************************************************************************/
67 // Local cache for global Pad, GeoManager
68 /**************************************************************************/
70 TVirtualPad* PushPad(TVirtualPad* new_gpad=0, Int_t subpad=0);
71 TVirtualPad* PopPad(Bool_t modify_update_p=false);
76 Bool_t fModifyUpdateP;
78 PadHolder(Bool_t modify_update_p, TVirtualPad* new_gpad=0, Int_t subpad=0) :
79 fModifyUpdateP(modify_update_p)
80 { PushPad(new_gpad, subpad); }
82 virtual ~PadHolder() { PopPad(fModifyUpdateP); }
84 ClassDef(PadHolder, 0);
87 class GeoManagerHolder
90 TGeoManager* fManager;
92 GeoManagerHolder(const GeoManagerHolder&); // Not implemented
93 GeoManagerHolder& operator=(const GeoManagerHolder&); // Not implemented
96 GeoManagerHolder(TGeoManager* new_gmgr=0);
97 virtual ~GeoManagerHolder();
99 ClassDef(GeoManagerHolder, 0);
103 /**************************************************************************/
104 // ReferenceCount base-class (interface)
105 /**************************************************************************/
113 ReferenceCount() : fRefCount(0) {}
114 virtual ~ReferenceCount() {}
116 ReferenceCount(const ReferenceCount&) : fRefCount(0) {}
117 ReferenceCount& operator=(const ReferenceCount&) { return *this; }
119 void IncRefCount() { ++fRefCount; }
120 void DecRefCount() { if(--fRefCount <= 0) OnZeroRefCount(); }
122 virtual void OnZeroRefCount() { delete this; }
124 ClassDef(ReferenceCount, 0);
127 /**************************************************************************/
128 // ReferenceBackPtr reference-count with back pointers
129 /**************************************************************************/
131 class ReferenceBackPtr : public ReferenceCount
134 std::list<RenderElement*> fBackRefs;
138 virtual ~ReferenceBackPtr();
140 ReferenceBackPtr(const ReferenceBackPtr&);
141 ReferenceBackPtr& operator=(const ReferenceBackPtr&);
143 using ReferenceCount::IncRefCount;
144 using ReferenceCount::DecRefCount;
145 virtual void IncRefCount(RenderElement* re);
146 virtual void DecRefCount(RenderElement* re);
148 virtual void UpdateBackPtrItems();
150 ClassDef(ReferenceBackPtr, 0);
154 /**************************************************************************/
156 /**************************************************************************/
158 void ColorFromIdx(Color_t ci, UChar_t* col, Bool_t alpha=kTRUE);
159 void ColorFromIdx(Float_t f1, Color_t c1, Float_t f2, Color_t c2,
160 UChar_t* col, Bool_t alpha=kTRUE);
161 Color_t* FindColorVar(TObject* obj, const Text_t* varname);