ROOT  6.06/09
Reference Guide
TQueryResult.cxx
Go to the documentation of this file.
1 // @(#)root/tree:$Id$
2 // Author: G Ganis Sep 2005
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 /** \class TQueryResult
13 A container class for query results.
14 */
15 
16 #include <string.h>
17 
18 #include "TBrowser.h"
19 #include "TError.h"
20 #include "TEventList.h"
21 #include "TQueryResult.h"
22 #include "TRegexp.h"
23 #include "TROOT.h"
24 #include "TMath.h"
25 #include "TSelector.h"
26 #include "TSystem.h"
27 #include "TTimeStamp.h"
28 
30 
31 ////////////////////////////////////////////////////////////////////////////////
32 /// Main constructor.
33 
34 TQueryResult::TQueryResult(Int_t seqnum, const char *opt, TList *inlist,
35  Long64_t entries, Long64_t first, const char *selec)
36  : fSeqNum(seqnum), fStatus(kSubmitted), fUsedCPU(0.), fOptions(opt),
37  fEntries(entries), fFirst(first),
38  fBytes(0), fParList("-"), fOutputList(0),
39  fFinalized(kFALSE), fArchived(kFALSE), fResultFile("-"),
40  fPrepTime(0.), fInitTime(0.), fProcTime(0.), fMergeTime(0.),
41  fRecvTime(-1), fTermTime(-1), fNumWrks(-1), fNumMergers(-1)
42 {
43  // Name and unique title
44  SetName(TString::Format("q%d", fSeqNum));
45  SetTitle(TString::Format("session-localhost-%ld-%d",
46  (Long_t)TTimeStamp().GetSec(), gSystem->GetPid()));
47 
48  // Start time
49  fStart.Set();
50  fEnd.Set(fStart.Convert()-1);
51 
52  // Save input list
53  fInputList = 0;
54  if (inlist) {
55  fInputList = (TList *) (inlist->Clone());
56  fInputList->SetOwner();
57  }
58 
59  // Log file
60  fLogFile = new TMacro("LogFile");
61 
62  // Selector files
63  fDraw = selec ? TSelector::IsStandardDraw(selec) : kFALSE;
64  if (fDraw) {
65  // The input list should contain info about the variables and
66  // selection cuts: save them into the macro title
67  TString varsel;
68  if (fInputList) {
69  TIter nxo(fInputList);
70  TObject *o = 0;
71  while ((o = nxo())) {
72  if (!strcmp(o->GetName(),"varexp")) {
73  varsel = o->GetTitle();
74  Int_t iht = varsel.Index(">>htemp");
75  if (iht > -1)
76  varsel.Remove(iht);
77  varsel.Form("\"%s\";", varsel.Data());
78  }
79  if (!strcmp(o->GetName(),"selection"))
80  varsel += TString::Format("\"%s\"", o->GetTitle());
81  }
82  if (gDebug > 0)
83  Info("TQueryResult","selec: %s, varsel: %s", selec, varsel.Data());
84  // Log notification also in the instance
85  fLogFile->AddLine(TString::Format("TQueryResult: selec: %s, varsel: %s",
86  selec, varsel.Data()));
87  }
88  // Standard draw action: save only the name
89  fSelecImp = new TMacro(selec, varsel);
90  fSelecHdr = 0;
91  } else {
92  // Save selector file
93  fSelecHdr = new TMacro;
94  fSelecImp = new TMacro;
95  SaveSelector(selec);
96  }
97 
98  // List of libraries loaded at creation
99  const char *pl = gSystem->GetLibraries();
100  fLibList = (pl && (strlen(pl) > 0)) ? pl : "-";
101 }
102 
103 ////////////////////////////////////////////////////////////////////////////////
104 /// Destructor.
105 
107 {
113 }
114 
115 ////////////////////////////////////////////////////////////////////////////////
116 /// Return an instance of TQueryResult containing only the local
117 /// info fields, i.e. no outputlist, liblist, dset, selectors, etc..
118 /// Used for fast retrieve of information about existing queries
119 /// and their status.
120 
122 {
123  // Create instance
125  fFirst, 0);
126 
127  // Correct fields
128  qr->fStatus = fStatus;
129  qr->fStart.Set(fStart.Convert());
130  qr->fEnd.Set(fEnd.Convert());
131  qr->fUsedCPU = fUsedCPU;
132  qr->fEntries = fEntries;
133  qr->fFirst = fFirst;
134  qr->fBytes = fBytes;
135  qr->fParList = fParList;
136  qr->fResultFile = fResultFile;
137  qr->fArchived = fArchived;
138  qr->fPrepTime = fPrepTime;
139  qr->fInitTime = fInitTime;
140  qr->fProcTime = fProcTime;
141  qr->fMergeTime = fMergeTime;
142  qr->fRecvTime = fRecvTime;
143  qr->fTermTime = fTermTime;
144  qr->fNumWrks = fNumWrks;
145  qr->fNumMergers = fNumMergers;
146 
147  qr->fSelecHdr = 0;
148  if (GetSelecHdr()) {
149  qr->fSelecHdr = new TMacro();
152  }
153  qr->fSelecImp = 0;
154  if (GetSelecImp()) {
155  qr->fSelecImp = new TMacro();
158  }
159 
160  // Name and title
161  qr->SetName(GetName());
162  qr->SetTitle(GetTitle());
163 
164  return qr;
165 }
166 
167 ////////////////////////////////////////////////////////////////////////////////
168 /// Save the selector header and implementation into the dedicated
169 /// TMacro instances. The header is searched for in the same directory
170 /// of the implementation file.
171 
172 void TQueryResult::SaveSelector(const char *selector)
173 {
174  if (!selector)
175  return;
176 
177  // Separate out aclic chars
178  TString selec = selector;
179  TString aclicMode;
180  TString arguments;
181  TString io;
182  selec = gSystem->SplitAclicMode(selec, aclicMode, arguments, io);
183 
184  // Store aclic options, if any
185  if (aclicMode.Length() > 0)
186  fOptions += TString::Format("#%s", aclicMode.Data());
187 
188  // If the selector is in a precompiled shared lib (e.g. in a PAR)
189  // we just save the name
190  TString selname = gSystem->BaseName(selec);
191  Int_t idx = selname.Index(".");
192  if (idx < 0) {
193  // Notify
194  if (gDebug > 0)
195  Info("SaveSelector", "precompiled selector: just save the name");
196  fSelecImp->SetName(selname);
197  fSelecImp->SetTitle(selname);
198  fSelecHdr->SetName(selname);
199  fSelecHdr->SetTitle(selname);
200  } else {
201  // We locate the file and save it in compressed form
202  if (idx > -1)
203  selname.Remove(idx);
204 
205  // Locate the implementation file
206  char *selc = gSystem->Which(TROOT::GetMacroPath(), selec, kReadPermission);
207  if (!selc) {
208  if (gDebug > 0)
209  Warning("SaveSelector",
210  "could not locate selector implementation file (%s)", selec.Data());
211  return;
212  }
213 
214  // Fill the TMacro instance
215  fSelecImp->ReadFile(selc);
217  fSelecImp->SetTitle(selname);
218 
219  // Locate the included header file
220  char *p = (char *) strrchr(selc,'.');
221  if (p) {
222  strlcpy(p+1,"h",strlen(p));
223  } else {
224  if (gDebug > 0)
225  Warning("SaveSelector",
226  "bad formatted name (%s): could not build header file name", selc);
227  }
228  if (!(gSystem->AccessPathName(selc, kReadPermission))) {
229  fSelecHdr->ReadFile(selc);
231  fSelecHdr->SetTitle(selname);
232  } else {
233  if (gDebug > 0)
234  Warning("SaveSelector",
235  "could not locate selector header file (%s)", selc);
236  }
237 
238  delete[] selc;
239  }
240 }
241 
242 ////////////////////////////////////////////////////////////////////////////////
243 /// End of query settings.
244 
246 {
247  // End time
248  fEnd.Set();
249 
250  // Status
251  fStatus = (status < kAborted || status > kCompleted) ? kAborted : status;
252 
253  // Clone the results
254  if (outlist && fOutputList != outlist) {
255  if (fOutputList) {
256  fOutputList->Delete();
258  }
259  if ((fOutputList = (TList *) (outlist->Clone()))) {
261  Info("RecordEnd", "output list cloned successfully!");
262  } else {
263  Warning("RecordEnd", "unable to clone output list!!!");
264  }
265  }
266 }
267 
268 ////////////////////////////////////////////////////////////////////////////////
269 /// Set processing info.
270 
272  Float_t init, Float_t proc)
273 {
274  fEntries = (ent > 0) ? ent : fEntries;
275  fUsedCPU = (cpu > 0.) ? cpu : fUsedCPU;
276  fBytes = (bytes > 0.) ? bytes : fBytes;
277  fInitTime = (init > 0.) ? init : fInitTime;
278  fProcTime = (proc > 0.) ? proc : fProcTime;
279 }
280 
281 ////////////////////////////////////////////////////////////////////////////////
282 /// Fill log file.
283 
284 void TQueryResult::AddLogLine(const char *logline)
285 {
286  if (logline)
287  fLogFile->AddLine(logline);
288 }
289 
290 ////////////////////////////////////////////////////////////////////////////////
291 /// Add obj to the input list
292 
294 {
295  if (fInputList && obj)
296  fInputList->Add(obj);
297 }
298 
299 ////////////////////////////////////////////////////////////////////////////////
300 /// Set (or update) query in archived state.
301 
302 void TQueryResult::SetArchived(const char *archfile)
303 {
304  if (IsDone()) {
305  fArchived = kTRUE;
306  if (archfile && (strlen(archfile) > 0))
307  fResultFile = archfile;
308  }
309 }
310 
311 ////////////////////////////////////////////////////////////////////////////////
312 /// Print query content. Use opt = "F" for a full listing.
313 
315 {
316  // Attention: the list must match EQueryStatus
317  const char *qst[] = {
318  "aborted ", "submitted", "running ", "stopped ", "completed"
319  };
320 
321  // Status label
322  Int_t st = (fStatus > 0 && fStatus <= kCompleted) ? fStatus : 0;
323 
324  // Range label
325  Long64_t last = (fEntries > -1) ? fFirst+fEntries-1 : -1;
326 
327  // Option
328  Bool_t full = ((strchr(opt,'F') || strchr(opt,'f'))) ? kTRUE : kFALSE;
329 
330  // Query number to be printed
331  Int_t qry = fSeqNum;
332  TString qn = opt;
333  TRegexp re("N.*N");
334  Int_t i1 = qn.Index(re);
335  if (i1 != kNPOS) {
336  qn.Remove(0, i1+1);
337  qn.Remove(qn.Index("N"));
338  qry = qn.Atoi();
339  }
340 
341  // Print separator if full dump
342  if (full) Printf("+++");
343 
344  TString range;
345  if (!full && (last > -1))
346  range.Form("evts:%lld-%lld", fFirst, last);
347 
348  // Print header
349  if (!fDraw) {
350  const char *fin = fFinalized ? "finalized" : qst[st];
351  const char *arc = fArchived ? "(A)" : "";
352  Printf("+++ #:%d ref:\"%s:%s\" sel:%s %9s%s %s",
353  qry, GetTitle(), GetName(), fSelecImp->GetTitle(), fin, arc,
354  range.Data());
355  } else {
356  Printf("+++ #:%d ref:\"%s:%s\" varsel:%s %s",
357  qry, GetTitle(), GetName(), fSelecImp->GetTitle(),
358  range.Data());
359  }
360 
361  // We are done, if not full dump
362  if (!full) return;
363 
364  // Time information
365  Float_t elapsed = (fProcTime > 0.) ? fProcTime
366  : (Float_t)(fEnd.Convert() - fStart.Convert());
367  Printf("+++ started: %s", fStart.AsString());
368  if (fPrepTime > 0.)
369  Printf("+++ prepare: %.3f sec", fPrepTime);
370  Printf("+++ init: %.3f sec", fInitTime);
371  Printf("+++ process: %.3f sec (CPU time: %.1f sec)", elapsed, fUsedCPU);
372  if (fNumMergers > 0) {
373  Printf("+++ merge: %.3f sec (%d mergers)", fMergeTime, fNumMergers);
374  } else {
375  Printf("+++ merge: %.3f sec ", fMergeTime);
376  }
377  if (fRecvTime > 0.)
378  Printf("+++ transfer: %.3f sec", fRecvTime);
379  if (fTermTime > 0.)
380  Printf("+++ terminate: %.3f sec", fTermTime);
381 
382  // Number of events processed, rate, size
383  Double_t rate = 0.0;
384  if (fEntries > -1 && elapsed > 0)
385  rate = fEntries / (Double_t)elapsed ;
386  Float_t size = ((Float_t)fBytes) / TMath::Power(2.,20.);
387  Printf("+++ processed: %lld events (size: %.3f MBs)", fEntries, size);
388  Printf("+++ rate: %.1f evts/sec", rate);
389 
390  Printf("+++ # workers: %d ", fNumWrks);
391 
392  // Package information
393  if (fParList.Length() > 1)
394  Printf("+++ packages: %s", fParList.Data());
395 
396  // Result information
397  TString res = fResultFile;
398  if (!fArchived) {
399  Int_t dq = res.Index("queries");
400  if (dq > -1) {
401  res.Remove(0,res.Index("queries"));
402  res.Insert(0,"<PROOF_SandBox>/");
403  }
404  if (res.BeginsWith("-")) {
405  res = (fStatus == kAborted) ? "not available" : "sent to client";
406  }
407  }
408  if (res.Length() > 1)
409  Printf("+++ results: %s", res.Data());
410 
411  if (fOutputList && fOutputList->GetSize() > 0)
412  Printf("+++ outlist: %d objects", fOutputList->GetSize());
413 }
414 
415 ////////////////////////////////////////////////////////////////////////////////
416 /// To support browsing of the results.
417 
419 {
420  if (fOutputList)
421  b->Add(fOutputList, fOutputList->Class(), "OutputList");
422 }
423 
424 ////////////////////////////////////////////////////////////////////////////////
425 /// Set / change the input list.
426 /// The flag 'adopt' determines whether the list is adopted (default)
427 /// or cloned. If adopted, object ownership is transferred to this object.
428 /// The internal fInputList will always be owner of its objects.
429 
431 {
432  if (!in || in != fInputList)
434 
435  if (in && in != fInputList) {
436  if (!adopt) {
437  fInputList = (TList *) (in->Clone());
438  } else {
439  fInputList = new TList;
440  TIter nxi(in);
441  TObject *o = 0;
442  while ((o = nxi()))
443  fInputList->Add(o);
444  in->SetOwner(kFALSE);
445  }
446  fInputList->SetOwner();
447  }
448 }
449 
450 ////////////////////////////////////////////////////////////////////////////////
451 /// Set / change the output list.
452 /// The flag 'adopt' determines whether the list is adopted (default)
453 /// or cloned. If adopted, object ownership is transferred to this object.
454 /// The internal fOutputList will always be owner of its objects.
455 
457 {
458  if (!out) {
460  return;
461  }
462 
463  if (out && out != fOutputList) {
464  TObject *o = 0;
465  if (fOutputList) {
466  TIter nxoo(fOutputList);
467  while ((o = nxoo())) {
468  if (out->FindObject(o)) fOutputList->Remove(o);
469  }
471  }
472  if (!adopt) {
473  fOutputList = (TList *) (out->Clone());
474  } else {
475  fOutputList = new TList;
476  TIter nxo(out);
477  o = 0;
478  while ((o = nxo()))
479  fOutputList->Add(o);
480  out->SetOwner(kFALSE);
481  }
483  }
484 }
485 
486 ////////////////////////////////////////////////////////////////////////////////
487 /// Compare two query result instances for equality.
488 /// Session name and query number are compared.
489 
491 {
492  if (!strcmp(qr1.GetTitle(), qr2.GetTitle()))
493  if (qr1.GetSeqNum() == qr2.GetSeqNum())
494  return kTRUE;
495  return kFALSE;
496 }
497 
498 ////////////////////////////////////////////////////////////////////////////////
499 /// Return TRUE if reference ref matches.
500 
502 {
503  TString lref; lref.Form("%s:%s", GetTitle(), GetName());
504 
505  if (lref == ref)
506  return kTRUE;
507 
508  return kFALSE;
509 }
510 
511 ////////////////////////////////////////////////////////////////////////////////
512 /// Return first instance of class 'classname' in the input list.
513 /// Usefull to access TDSet, TEventList, ...
514 
515 TObject *TQueryResult::GetInputObject(const char *classname) const
516 {
517  TObject *o = 0;
518  if (classname && fInputList) {
519  TIter nxi(fInputList);
520  while ((o = nxi()))
521  if (!strncmp(o->ClassName(), classname, strlen(classname)))
522  return o;
523  }
524 
525  // Not found
526  return o;
527 }
void Add(TObject *obj, const char *name=0, Int_t check=-1)
Add object with name to browser.
Definition: TBrowser.cxx:259
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
Definition: TSystem.cxx:928
virtual const char * GetTitle() const
Returns title of object.
Definition: TNamed.h:52
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
Definition: TSystem.cxx:1265
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form: ~~~ {.cpp} [path/]macro.C[+|++[k|f|g|O|c|s|d|v|-]][(args)]...
Definition: TSystem.cxx:4071
void Browse(TBrowser *b=0)
To support browsing of the results.
virtual int GetPid()
Get process id.
Definition: TSystem.cxx:711
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Definition: TList.cxx:404
Float_t fRecvTime
Definition: TQueryResult.h:84
void SaveSelector(const char *selec)
Save the selector header and implementation into the dedicated TMacro instances.
UInt_t Convert(Bool_t toGMT=kFALSE) const
Convert fDatime from TDatime format to the standard time_t format.
Definition: TDatime.cxx:179
Int_t GetSeqNum() const
Definition: TQueryResult.h:123
long long Long64_t
Definition: RtypesCore.h:69
void Set()
Set Date/Time to current time as reported by the system.
Definition: TDatime.cxx:286
Ssiz_t Length() const
Definition: TString.h:390
float Float_t
Definition: RtypesCore.h:53
Float_t fUsedCPU
Definition: TQueryResult.h:65
const char Option_t
Definition: RtypesCore.h:62
EQueryStatus fStatus
Definition: TQueryResult.h:62
TMacro * GetSelecHdr() const
Definition: TQueryResult.h:135
virtual void SetName(const char *name)
Change (i.e.
Definition: TNamed.cxx:128
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Definition: TObject.cxx:892
Regular expression class.
Definition: TRegexp.h:35
void AddLogLine(const char *logline)
Fill log file.
Class supporting a collection of lines with C++ code.
Definition: TMacro.h:33
Basic string class.
Definition: TString.h:137
ClassImp(TQueryResult) TQueryResult
Main constructor.
TAlienJobStatus * status
Definition: TAlienJob.cxx:51
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TQueryResult * CloneInfo()
Return an instance of TQueryResult containing only the local info fields, i.e.
const Bool_t kFALSE
Definition: Rtypes.h:92
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
Definition: TList.cxx:496
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
Definition: TSystem.cxx:1511
Float_t fTermTime
Definition: TQueryResult.h:85
TMacro * GetSelecImp() const
Definition: TQueryResult.h:136
TDatime fEnd
Definition: TQueryResult.h:64
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Definition: TString.h:558
TString & Insert(Ssiz_t pos, const char *s)
Definition: TString.h:592
Int_t fNumMergers
Definition: TQueryResult.h:87
TMacro * fSelecHdr
Definition: TQueryResult.h:72
LongDouble_t Power(LongDouble_t x, LongDouble_t y)
Definition: TMath.h:501
Bool_t fFinalized
Definition: TQueryResult.h:77
static const char * GetMacroPath()
Get macro search path. Static utility function.
Definition: TROOT.cxx:2406
TMacro * fLogFile
Definition: TQueryResult.h:71
virtual TObject * Clone(const char *newname="") const
Make a clone of an collection using the Streamer facility.
const char * Data() const
Definition: TString.h:349
#define SafeDelete(p)
Definition: RConfig.h:436
virtual Bool_t IsDone() const
Definition: TQueryResult.h:151
TString fResultFile
Definition: TQueryResult.h:79
TDatime fStart
Definition: TQueryResult.h:63
void Print(Option_t *opt="") const
Print query content. Use opt = "F" for a full listing.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
Definition: TString.cxx:2334
Long64_t fFirst
Definition: TQueryResult.h:69
void Info(const char *location, const char *msgfmt,...)
TMacro * fSelecImp
Definition: TQueryResult.h:73
Int_t Atoi() const
Return integer value of string.
Definition: TString.cxx:1964
virtual void SetOutputList(TList *out, Bool_t adopt=kTRUE)
Set / change the output list.
A container class for query results.
Definition: TQueryResult.h:44
char * out
Definition: TBase64.cxx:29
virtual void SetProcessInfo(Long64_t ent, Float_t cpu=0., Long64_t siz=-1, Float_t inittime=0., Float_t proctime=0.)
Set processing info.
TList * fOutputList
Definition: TQueryResult.h:76
void AddInput(TObject *obj)
Add obj to the input list.
A doubly linked list.
Definition: TList.h:47
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:41
Bool_t fArchived
Definition: TQueryResult.h:78
R__EXTERN TSystem * gSystem
Definition: TSystem.h:549
virtual const char * GetLibraries(const char *regexp="", const char *option="", Bool_t isRegexp=kTRUE)
Return a space separated list of loaded shared libraries.
Definition: TSystem.cxx:2084
TList * fInputList
Definition: TQueryResult.h:67
static Bool_t IsStandardDraw(const char *selec)
Find out if this is a standard selection used for Draw actions (either TSelectorDraw, TProofDraw or deriving from them).
Definition: TSelector.cxx:235
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Definition: TObject.cxx:187
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Definition: TList.cxx:674
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Definition: TString.cxx:2321
virtual void RecordEnd(EQueryStatus status, TList *outlist=0)
End of query settings.
Int_t fNumWrks
Definition: TQueryResult.h:86
virtual Int_t ReadFile(const char *filename)
Read lines in filename in this macro.
Definition: TMacro.cxx:334
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:51
#define Printf
Definition: TGeoToOCC.h:18
Bool_t Matches(const char *ref)
Return TRUE if reference ref matches.
Float_t fPrepTime
Definition: TQueryResult.h:80
TString & Remove(Ssiz_t pos)
Definition: TString.h:616
long Long_t
Definition: RtypesCore.h:50
TObject * GetInputObject(const char *classname) const
Return first instance of class 'classname' in the input list.
virtual Int_t GetSize() const
Definition: TCollection.h:95
static Int_t init()
virtual const char * GetName() const
Returns name of object.
Definition: TObject.cxx:415
double Double_t
Definition: RtypesCore.h:55
Float_t fProcTime
Definition: TQueryResult.h:82
The TTimeStamp encapsulates seconds and ns since EPOCH.
Definition: TTimeStamp.h:76
virtual void SetInputList(TList *in, Bool_t adopt=kTRUE)
Set / change the input list.
virtual ~TQueryResult()
Destructor.
void SetArchived(const char *archfile)
Set (or update) query in archived state.
Mother of all ROOT objects.
Definition: TObject.h:58
Float_t fMergeTime
Definition: TQueryResult.h:83
virtual void Add(TObject *obj)
Definition: TList.h:81
const Ssiz_t kNPOS
Definition: Rtypes.h:115
Long64_t fEntries
Definition: TQueryResult.h:68
R__EXTERN Int_t gDebug
Definition: Rtypes.h:128
Long64_t fBytes
Definition: TQueryResult.h:70
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
Definition: TString.h:582
Bool_t operator==(const TQueryResult &qr1, const TQueryResult &qr2)
Compare two query result instances for equality.
const char * AsString() const
Return the date & time as a string (ctime() format).
Definition: TDatime.cxx:99
const Bool_t kTRUE
Definition: Rtypes.h:91
virtual const char * GetTitle() const
Returns title of object.
Definition: TObject.cxx:459
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
Definition: TNamed.cxx:152
TObject * obj
gr SetName("gr")
TString fParList
Definition: TQueryResult.h:75
virtual TObjString * AddLine(const char *text)
Add line with text in the list of lines of this macro.
Definition: TMacro.cxx:137
Bool_t fDraw
Definition: TQueryResult.h:61
TString fOptions
Definition: TQueryResult.h:66
Float_t fInitTime
Definition: TQueryResult.h:81
T1 fFirst
Definition: X11Events.mm:85
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Definition: TObject.cxx:904