127 #include "RConfigure.h" 147 #define BUF_SIZE 1024 // must be smaller than/equal to fgLineBufSize in Getline.cxx and 149 #define IfDebug(x) if(gDebug==TTabCom::kDebug) x 175 fPrevInterpMarker(0),
434 while (
const auto key = next()) {
436 const char* className = key->GetName();
437 if (!strncmp(className,
"Library.", 8))
440 if (!strstr(className,
".h"))
457 const char* className =
gInterpreter->ClassInfo_FullName(ci);
458 if (strstr(className,
"(anonymous)"))
503 if (path &&
fpFiles && strcmp(path, previousPath) == 0) {
542 std::ifstream file1(outf);
544 Error(
"TTabCom::GetListOfEnvVars",
"could not open file \"%s\"",
557 file1.ignore(32000,
'\n');
581 return gROOT->GetListOfGlobalFunctions(
true);
638 passwd.open(
"/etc/passwd");
642 passwd.ignore(32000,
'\n');
677 Int_t & nGoodStrings)
686 Bool_t atLeast1GoodString;
690 atLeast1GoodString =
kFALSE;
694 if ((pObj = next())) {
698 atLeast1GoodString =
kTRUE;
717 if ((pObj = next())) {
725 while (((
int) strlen(s) >= i && s[i] == ch0) ||
726 (atLeast1GoodString && !isGood));
744 assert(dirName != 0);
763 if (fileName ==
"." || fileName ==
"..")
805 assert(varName != 0);
806 IfDebug(std::cerr <<
"DetermineClass(\"" << varName <<
"\");" << std::endl);
810 if (!fout)
return "";
818 cmd =
"gROOT->ProcessLine(\"";
826 gROOT->ProcessLineSync(
".>");
832 std::ifstream file1(outf);
834 Error(
"TTabCom::DetermineClass",
"could not open file \"%s\"",
840 if (!file1 || c <= 0 || c ==
'*' || c !=
'(') {
841 Error(
"TTabCom::DetermineClass",
"variable \"%s\" not defined?",
845 IfDebug(std::cerr << (
char) c << std::flush);
851 if (type ==
"const" || type ==
"class") {
855 IfDebug(std::cerr << (
char) c << std::flush);
860 IfDebug(std::cerr << type << std::endl);
885 const char *fignore =
gEnv->
GetValue(
"TabCom.FileIgnore", (
char *) 0);
891 std::istringstream endings((
char *) fignore);
893 std::istrstream endings((
char *) fignore);
899 while (!ending.
IsNull()) {
962 if (!fout)
return "";
967 std::ifstream file1(outf);
969 Error(
"TTabCom::GetSysIncludePath",
"could not open file \"%s\"",
981 if (!token.IsNull()) {
984 path.
Append(token.Data() + 2);
996 TString sCINTSYSDIR(
"$ROOTSYS/cint");
998 TString sCINTSYSDIR(CINTINCDIR);
1000 path.
Append(
":" + sCINTSYSDIR +
"/include");
1004 path.
Append(
":/usr/include");
1043 if (!path1[0]) path1 =
".";
1047 std::istringstream path((
char *) path1);
1049 std::istrstream path((
char *) path1);
1059 IfDebug(std::cerr <<
"NewListOfFilesInPath(): dirName = " << dirName <<
1081 char c1 = (fileName.
Length() > 0) ? fileName[0] : 0;
1082 return c1 ==
'/' || c1 ==
'~' || c1 ==
'$' || fileName.
BeginsWith(
"./")
1114 const Int_t kNotDefined = -2;
1115 static Int_t old_level = kNotDefined;
1119 if (old_level == kNotDefined) {
1120 std::cerr <<
"NoMsg(): ERROR 1. old_level==" << old_level << std::endl;
1125 old_level = kNotDefined;
1128 if (old_level != kNotDefined) {
1129 std::cerr <<
"NoMsg(): ERROR 2. old_level==" << old_level << std::endl;
1156 const char appendage[],
1168 IfDebug(std::cerr <<
"TTabCom::Complete() ..." << std::endl);
1170 assert(pListOfCandidates != 0);
1173 const int loc = *
fpLoc;
1189 int start = s2.
Index(re);
1191 IfDebug(std::cerr <<
" s1: " << s1 << std::endl);
1192 IfDebug(std::cerr <<
" s2: " << s2 << std::endl);
1193 IfDebug(std::cerr <<
" s3: " << s3 << std::endl);
1194 IfDebug(std::cerr <<
"start: " << start << std::endl);
1195 IfDebug(std::cerr << std::endl);
1201 TList listOfMatches;
1202 TList listOfFullPaths;
1208 TIter next_candidate(pListOfCandidates);
1209 TIter next_match(&listOfMatches);
1210 TIter next_fullpath(&listOfFullPaths);
1213 while ((pObj = next_candidate())) {
1215 const char *s4 = pObj->
GetName();
1220 const char *s5 = strrchr(s4,
'/');
1232 IfDebug(std::cerr <<
"adding " << s5 <<
'\t' << s4 << std::endl);
1240 IfDebug(std::cerr <<
"adding " << s5 <<
'\t' << s4 << std::endl);
1256 if (nMatches == 0) {
1265 if (nMatches == 1) {
1267 const char *short_name = next_match()->GetName();
1268 const char *full_name = next_fullpath()->GetName();
1270 pObj = pListOfCandidates->
FindObject(short_name);
1272 IfDebug(std::cerr << std::endl <<
"class: " << pObj->
ClassName() << std::endl);
1275 else if (className ==
"TMethod" || className ==
"TFunction") {
1281 }
else if (className ==
"TDataMember") {
1286 CopyMatch(match, short_name, appendage, full_name);
1295 IfDebug(std::cerr <<
" i=" << i <<
" ch=" << ch << std::endl);
1303 if (nGoodStrings == 1) {
1307 s = next_match()->GetName();
1308 s0 = next_fullpath()->GetName();
1315 IfDebug(std::cerr <<
"more than 1 GoodString" << std::endl);
1326 IfDebug(std::cerr <<
"printing ambiguous matches" << std::endl);
1327 std::set<std::string> alreadyPrinted;
1328 while ((pObj = next_match())) {
1330 if (alreadyPrinted.insert(s).second) {
1332 s0 = next_fullpath()->GetName();
1335 out << s <<
"/" << std::endl;
1337 out << s << std::endl;
1358 int i = strlen(
fBuf);
1359 int l = strlen(match) - (loc - start);
1363 Error(
"TTabCom::Complete",
"buffer overflow");
1368 IfDebug(std::cerr <<
" i=" << i << std::endl);
1369 IfDebug(std::cerr <<
" L=" << l << std::endl);
1370 IfDebug(std::cerr <<
"loc=" << loc << std::endl);
1373 for (; i >= loc; i -= 1) {
1378 strncpy(
fBuf + start, match, strlen(match));
1406 const char appendage[],
1407 const char fullName[])
const 1419 assert(localName != 0);
1422 strcpy(dest, localName);
1424 const char *key =
"filename";
1425 const int key_len = strlen(key);
1427 IfDebug(std::cerr <<
"CopyMatch()." << std::endl);
1428 IfDebug(std::cerr <<
"localName: " << (localName ? localName :
"0") <<
1430 IfDebug(std::cerr <<
"appendage: " << (appendage ? appendage :
"0") <<
1432 IfDebug(std::cerr <<
" fullName: " << (fullName ? fullName :
"0") <<
1437 if (appendage && strncmp(appendage, key, key_len) == 0) {
1439 appendage += key_len;
1440 IfDebug(std::cerr <<
"new appendage: " << appendage << std::endl);
1443 strcpy(dest + strlen(localName),
"/");
1446 strcpy(dest + strlen(localName), appendage);
1450 strcpy(dest + strlen(localName), appendage);
1464 for (
int context = 0; context <
kNUM_PAT; ++context) {
1467 IfDebug(std::cerr << std::endl
1468 <<
"context=" << context <<
" " 1469 <<
"RegExp=" <<
fRegExp[context]
1482 const char defaultPath[])
const 1488 if (end>0 && path[end]!=
'/' && path[end]!=
'\\') {
1497 if (fileName[end] !=
'/' && fileName[end] !=
'\\') {
1502 extendedPath =
ExtendPath(defaultPath, newBase);
1505 extendedPath = defaultPath;
1507 IfDebug(std::cerr << std::endl);
1508 IfDebug(std::cerr <<
" fileName: " << fileName << std::endl);
1509 IfDebug(std::cerr <<
" pathBase: " << newBase << std::endl);
1511 IfDebug(std::cerr <<
" defaultPath: " << defaultPath << std::endl);
1513 IfDebug(std::cerr <<
" defaultPath: " << std::endl);
1515 IfDebug(std::cerr <<
"extendedPath: " << extendedPath << std::endl);
1516 IfDebug(std::cerr << std::endl);
1518 return extendedPath;
1530 std::stringstream str;
1536 if (originalPath) str << originalPath;
1573 const char dummy[] =
".";
1581 std::cerr << std::endl <<
"tab completion not implemented for this context" <<
1590 pos =
Complete(
"[^~]*$", pListOfUsers,
"/", out);
1597 pos =
Complete(
"[^$]*$", pEnv,
"", out);
1605 const TString fileName = s3(
"[^ ><]*$");
1611 pos =
Complete(
"[^ /]*$", pListOfFiles,
"filename ", out);
1620 const TString fileName = s3(
"[^ ]*$");
1627 pos =
Complete(
"[^ /]*$", pListOfFiles,
"filename ", out);
1638 TString fileName = s3(
"[^<]*$");
1656 const TString fileName = s3(
"[^\"]*$");
1662 pos =
Complete(
"[^\"/]*$", pListOfFiles,
"filename\" ", out);
1674 const TString fileName = s3(
"[^\"]*$");
1679 pos =
Complete(
"[^\"/]*$", pListOfFiles,
"filename\");", out);
1685 const TString fileName = s3(
"[^ \"]*$");
1689 pos =
Complete(
"[^\" /]*$", pListOfFiles,
"filename\"", out);
1701 IfDebug(std::cerr << std::endl);
1702 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1707 TString partname = s3(
"[_a-zA-Z][_a-zA-Z0-9]*$");
1718 TString sym = str(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1722 prefix = sym + prefix;
1728 TString sym = prefix(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1731 IfDebug(std::cerr <<
"prefix: " <<
'"' << prefix <<
'"' << std::endl);
1732 IfDebug(std::cerr <<
"preprefix: " <<
'"' << preprefix <<
'"' << std::endl);
1735 if (namesp.
Length() >= 2)
1737 IfDebug(std::cerr <<
"namesp: " <<
'"' << namesp <<
'"' << std::endl);
1749 for (i = 0; i < tmp->
GetSize(); i++) {
1773 pos =
Complete(
"[^: ]*$", pList,
"", out);
1777 if (context != original_context)
1795 TString name = s1(
"[_a-zA-Z][-_a-zA-Z0-9<>():.]*$");
1797 IfDebug(std::cerr << std::endl);
1798 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1808 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1824 int* store_fpLoc =
fpLoc;
1825 char* store_fBuf =
fBuf;
1826 pos =
Complete(
"[^. ]*$", pList,
"(", out);
1828 fpLoc = store_fpLoc;
1835 pos =
Complete(
"[^> ]*$", pList,
"(", out);
1838 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1844 if (context != original_context)
1858 IfDebug(std::cerr << std::endl);
1859 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1864 TString partname = s3(
"[_a-zA-Z][_a-zA-Z0-9]* *($");
1875 TString sym = str(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1879 prefix = sym + prefix;
1885 TString sym = prefix(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1888 IfDebug(std::cerr <<
"prefix: " <<
'"' << prefix <<
'"' << std::endl);
1889 IfDebug(std::cerr <<
"preprefix: " <<
'"' << preprefix <<
'"' << std::endl);
1900 methodName = s3(
"[^:>\\.(]*($");
1904 IfDebug(std::cerr << methodName << std::endl);
1912 TIter nextMethod(pList);
1914 while ((pMethod = (
TMethod *) nextMethod())) {
1915 if (methodName == pMethod->
GetName()) {
1921 if (comment && comment[0] !=
'\0') {
1922 out <<
" \t// " << comment;
1939 if (context != original_context)
1955 name = s3(
"[_a-zA-Z][_a-zA-Z0-9:]* *($", 3);
1960 name = s3(
"^[_a-zA-Z][_a-zA-Z0-9:]*");
1963 IfDebug(std::cerr << std::endl);
1964 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1986 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1997 methodName =
name(
"[_a-zA-Z][_a-zA-Z0-9]*$");
2000 methodName = s3(
"[^:>\\.(]*($");
2004 IfDebug(std::cerr << methodName << std::endl);
2012 TIter nextMethod(pList);
2014 while ((pMethod = (
TMethod *) nextMethod())) {
2015 if (methodName == pMethod->
GetName()) {
2021 if (comment && comment[0] !=
'\0') {
2022 out <<
" \t// " << comment;
2039 if (context != original_context)
2050 if (l2 > l3 && s2[l2 - l3 - 1] ==
'.') {
2051 std::cerr << std::endl <<
2052 "tab completion not implemented for this context" << std::endl;
2056 if (l2 > l3 + 1 && s2(l2 - l3 - 2, 2) ==
"->") {
2057 std::cerr << std::endl <<
2058 "tab completion not implemented for this context" << std::endl;
2065 if (pL2) pList->
AddAll(pL2);
2069 if (pC1) pList->
AddAll(pC1);
2072 if (pC3) pList->
AddAll(pC3);
2074 pos =
Complete(
"[_a-zA-Z][_a-zA-Z0-9]*$", pList,
"", out);
2083 TString functionName = s3(
"[_a-zA-Z][_a-zA-Z0-9]*");
2084 IfDebug(std::cerr << functionName << std::endl);
2089 while ((pObj = nextGlobalFunc())) {
2090 if (strcmp(pObj->
GetName(), functionName) == 0) {
2091 listOfMatchingGlobalFuncs.
Add(pObj);
2095 if (listOfMatchingGlobalFuncs.
IsEmpty()) {
2096 std::cerr << std::endl <<
"no such function: " <<
dblquote(functionName)
2099 TIter next(&listOfMatchingGlobalFuncs);
2101 while ((pFunction = (
TFunction *) next())) {
2103 <<
" " << pFunction->
GetName()
2119 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
2168 "[_a-zA-Z][_a-zA-Z0-9:]* +[_a-zA-Z][_a-zA-Z0-9]* *($");
2170 "[_a-zA-Z][_a-zA-Z0-9]* *:: *[_a-zA-Z0-9]* *($");
2172 "[_a-zA-Z][_a-zA-Z0-9()]* *\\. *[_a-zA-Z0-9]* *($");
2174 "[_a-zA-Z][_a-zA-Z0-9()]* *-> *[_a-zA-Z0-9]* *($");
2177 "[_a-zA-Z][_a-zA-Z0-9]* *:: *[_a-zA-Z0-9]*$");
2179 "[_a-zA-Z][_a-zA-Z0-9()]* *\\. *[_a-zA-Z0-9()]*$");
2182 "[_a-zA-Z][_a-zA-Z0-9()]* *-> *[_a-zA-Z0-9()]*$");
2205 Error(
"TTabCom::MakeClassFromClassName",
"Unknown class \"%s\"", className);
2215 Error(
"TTabCom::MakeClassFromClassName",
"class \"%s\" is not defined.", className);
2263 (
gROOT->FindObject(varName) != 0);
2269 if (0) printf(
"varName is [%s] with iteration [%i]\n", varName, iter);
2275 if (!varName_exists && cut != 0)
2283 parentName[cut] = 0;
2284 if (0) printf(
"Parent string is [%s]\n", parentName.
Data());
2290 for(
Int_t i = cut-1; i>=0; --i) {
2291 switch (parentName[i]) {
2295 parentName = parentName(i+1,cut-i-1);
2307 if (varName[cut] ==
'.') {
2308 memberName = varName+cut+1;
2309 if (0) printf(
"Member/method is [%s]\n", memberName.
Data());
2313 memberName = varName+cut+2;
2314 if (0) printf(
"Member/method is [%s]\n", memberName.
Data());
2319 if (0) printf(
"I got [%s] from MakeClassFromVarName()\n", pclass->
GetName());
2323 if (0) printf(
"Variable [%s] exists!\n", parentName.
Data());
2326 if (iter == 0)
return pclass;
2328 if (0) printf(
"Trying data member [%s] of class [%s] ...\n",
2335 if (memberName == dmptr->GetName())
break;
2339 if (0) printf(
"It's a member!\n");
2341 TString returnName = dmptr->GetTypeName();
2352 char *parentesis_ptr = (
char*)strrchr(memberName.
Data(),
'(');
2353 if (parentesis_ptr) *parentesis_ptr = 0;
2356 if (0) printf(
"Trying method [%s] of class [%s] ...\n",
2363 while ((mptr = (
TMethod *) next())) {
2364 if (strcmp(memberName.
Data(),mptr->GetName())==0)
break;
2368 TString returnName = mptr->GetReturnTypeName();
2370 if (0) printf(
"It's a method called [%s] with return type [%s]\n",
2371 memberName.
Data(), returnName.
Data());
2374 if (returnName[returnName.
Length()-1] ==
'*')
2376 returnName[returnName.
Length()-1] = 0;
2396 if (!varName_exists) {
2397 std::cerr << std::endl <<
"variable " <<
dblquote(varName) <<
" not defined." 2413 if (className.
IsNull() || className ==
"*") {
2417 std::cerr << std::endl <<
"problem determining class of " <<
dblquote(varName)
2427 className[className.
Length()-1] = 0;
2456 Fatal(
"TTabCom::MakeClassFromVarName",
"Conext case %d not handled",context);
2462 for (i = *
fpLoc;
fBuf[i] !=
'.'; i -= 1) {
2465 for (i = strlen(
fBuf); i >= loc; i -= 1) {
2469 fBuf[loc + 1] =
'>';
2473 std::cerr << std::endl <<
dblquote(varName) <<
2474 " is of pointer type. Use this operator: ->" << std::endl;
2483 if (className[className.
Length() - 1] ==
'*') {
2484 std::cerr << std::endl <<
"can't handle pointers to pointers." << std::endl;
2503 Fatal(
"TTabCom::MakeClassFromVarName",
"Conext case %d not handled",context);
2509 for (i = *
fpLoc;
fBuf[i - 1] !=
'-' &&
fBuf[i] !=
'>'; i -= 1) {
2512 int len = strlen(
fBuf);
2513 for (; i < len; i += 1) {
2519 std::cerr << std::endl <<
dblquote(varName) <<
2520 " is not of pointer type. Use this operator: ." << std::endl;
2537 std::cerr << std::endl
2539 << (int) handle <<
" >= kNUM_PAT=" << (
int)
kNUM_PAT << std::endl;
2558 if (start > (
int)strlen(var_str)) start = strlen(var_str);
2560 for (
int i = start; i > 0; i--)
2562 if (var_str[i] ==
'.')
return i;
2563 if (var_str[i] ==
'>' && i > 0 && var_str[i-1] ==
'-')
return i-1;
virtual const char * GetName() const
Returns name of object.
virtual void Add(TObject *obj)
static void AppendListOfFilesInDirectory(const char dirName[], TSeqCollection *pList)
[static utility function]/////////////////////////////
void ClearGlobals()
Forget all global variables seen so far.
static Char_t AllAgreeOnChar(int i, const TSeqCollection *pList, Int_t &nGoodStrings)
[static utility function]///////////////////////////////////////////
void ClearSysIncFiles()
Close system files.
void RehashGlobals()
Reload globals.
const TSeqCollection * GetListOfUsers()
reads from "/etc/passwd"
R__EXTERN Int_t gErrorIgnoreLevel
void CopyMatch(char dest[], const char localName[], const char appendage[]=0, const char fullName[]=0) const
[private]
void Fatal(const char *location, const char *msgfmt,...)
Collectable string class.
const char * GetReturnTypeName() const
Get full type description of function return type, e,g.: "class TDirectory*".
TClass * MakeClassFromVarName(const char varName[], EContext_t &context, int iter=0)
private returns a new'd TClass given the name of a variable.
All ROOT classes may have RTTI (run time type identification) support added.
void ClearEnvVars()
Forget all environment variables seen so far.
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
TClass * TryMakeClassFromClassName(const char className[]) const
Same as above but does not print the error message.
TSeqCollection * fpEnvVars
virtual void AddAll(const TCollection *col)
Add all objects from collection col to this collection.
Regular expression class.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
static TSeqCollection * NewListOfFilesInPath(const char path[])
[static utility function]/////////////////////////////
const TSeqCollection * GetListOfClasses()
Return the list of classes.
void RehashSysIncFiles()
Reload system include files.
virtual const char * DirName(const char *pathname)
Return the directory name in pathname.
const TList * GetListOfAllPublicMethods(Bool_t load=kTRUE)
Returns a list of all public methods of this class and its base classes.
TSeqCollection * fpPragmas
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
TString & Prepend(const char *cs)
Bool_t Contains(const char *name) const
void ClearCppDirectives()
Forget all Cpp directives seen so far.
void RehashPragmas()
Reload pragmas.
static TString DetermineClass(const char varName[])
[static utility function]/////////////////////////////
static const char * GetMacroPath()
Get macro search path. Static utility function.
TTabCom()
Default constructor.
virtual void Delete(Option_t *option="")=0
Delete this object.
virtual const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
virtual int Unlink(const char *name)
Unlink, i.e. remove, a file.
Sequenceable collection abstract base class.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual FILE * TempFileName(TString &base, const char *dir=0)
Create a secure temporary file by appending a unique 6 letter string to base.
void ClearPragmas()
Forget all pragmas seen so far.
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
int ParseReverse(const char *var_str, int start)
Returns the place in the string where to put the \0, starting the search from "start".
const TSeqCollection * GetListOfFilesInPath(const char path[])
"path" should be initialized with a colon separated list of system directories
void ClearGlobalFunctions()
Forget all global functions seen so far.
virtual const char * GetDynamicPath()
Return the dynamic path (used to find shared libraries).
int Makepat(const char *, Pattern_t *, int)
Make a pattern template from the string pointed to by exp.
void RehashCppDirectives()
Cpp rehashing.
Int_t Hook(char *buf, int *pLoc, std::ostream &out)
[private]
virtual const char * Getenv(const char *env)
Get environment variable.
TString & Append(const char *cs)
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
void RehashClasses()
Do the class rehash.
virtual const char * GetCommentString()
Returns a comment string from the class declaration.
void Error(const char *location, const char *msgfmt,...)
void ClearAll()
clears all lists except for user names and system include files.
static void NoMsg(Int_t errorLevel)
[static utility function]/////////////////////////////
void SetPattern(EContext_t handle, const char regexp[])
[private]
void RehashGlobalFunctions()
Reload global functions.
Int_t GetNargs() const
Number of function arguments.
R__EXTERN TSystem * gSystem
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
Collection abstract base class.
TSeqCollection * fpSysIncFiles
void ClearUsers()
Forget all user seen so far.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
The ROOT global object gROOT contains a list of all defined classes.
void RehashAll()
clears and then rebuilds all lists except for user names and system include files.
virtual Int_t Exec(const char *shellcmd)
Execute a command.
const char * Matchs(const char *, size_t len, const Pattern_t *, const char **)
Match a string with a pattern.
void ClearFiles()
Close all files.
TSeqCollection * fpClasses
virtual void FreeDirectory(void *dirp)
Free a directory.
TString DeterminePath(const TString &fileName, const char defaultPath[]) const
[private]
TList * GetListOfAllPublicDataMembers(Bool_t load=kTRUE)
Returns a list of all public data members of this class and its base classes.
TString & Remove(Ssiz_t pos)
void RehashEnvVars()
Environemnt variables rehashing.
const TSeqCollection * GetListOfSysIncFiles()
Return the list of system include files.
EContext_t DetermineContext() const
[private]
virtual Bool_t IsEmpty() const
static char * Next()
Returns next class from sorted class table.
static Bool_t PathIsSpecifiedInFileName(const TString &fileName)
[static utility function]/////////////////////////////
TString ExtendPath(const char originalPath[], TString newBase) const
[private]
static RooMathCoreReg dummy
virtual int DisplayIncludePath(FILE *) const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
static constexpr double s
void Beep(Int_t freq=-1, Int_t duration=-1, Bool_t setDefault=kFALSE)
Beep for duration milliseconds with a tone of frequency freq.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
ULong64_t fPrevInterpMarker
virtual TObject * At(Int_t idx) const =0
Mother of all ROOT objects.
Global functions class (global functions are obtained from CINT).
const TSeqCollection * GetListOfPragmas()
Return the list of pragmas.
void ClearClasses()
Clear classes and namespace collections.
std::istream & ReadToDelim(std::istream &str, char delim='\n')
Read up to an EOF, or a delimiting character, whichever comes first.
Bool_t R_ISDIR(Int_t mode)
virtual void Add(TObject *obj)
#define dest(otri, vertexptr)
TClass * MakeClassFromClassName(const char className[]) const
private returns a new'd TClass given the name of a class.
Each ROOT class (see TClass) has a linked list of methods.
const char * fRegExp[kNUM_PAT]
Int_t Complete(const TRegexp &re, const TSeqCollection *pListOfCandidates, const char appendage[], std::ostream &out, TString::ECaseCompare cmp=TString::kExact)
[private]
static Bool_t ExcludedByFignore(TString s)
[static utility function]/////////////////////////////
static TString GetSysIncludePath()
[static utility function]/////////////////////////////
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
static Bool_t IsDirectory(const char fileName[])
[static utility function]/////////////////////////////
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
const TSeqCollection * GetListOfCppDirectives()
Return the list of CPP directives.
void InitPatterns()
[private]
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
R__EXTERN TInterpreter * gCling
virtual const char * GetName() const
Returns name of object.
virtual Int_t GetSize() const
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
const TSeqCollection * GetListOfEnvVars()
Uses "env" (Unix) or "set" (Windows) to get list of environment variables.
#define sym(otri1, otri2)
TCollection * GetListOfGlobalFunctions()
Return the list of global functions.
const TSeqCollection * GetListOfGlobals()
Return the list of globals.
TSeqCollection * fpDirectives
const char * GetSignature()
Return signature of function.
void RehashUsers()
Reload users.
const char * Data() const
void RehashFiles()
Close files.
Pattern_t fPat[kNUM_PAT][MAX_LEN_PAT]