127 #include "RConfigure.h" 147 #define BUF_SIZE 1024 // must match value in C_Getline.c (for bounds checking) 148 #define IfDebug(x) if(gDebug==TTabCom::kDebug) x 174 fPrevInterpMarker(0),
433 while (
const auto key = next()) {
435 const char* className = key->GetName();
436 if (!strncmp(className,
"Library.", 8))
439 if (!strstr(className,
".h"))
456 const char* className =
gInterpreter->ClassInfo_FullName(ci);
457 if (strstr(className,
"(anonymous)"))
502 if (path &&
fpFiles && strcmp(path, previousPath) == 0) {
541 std::ifstream file1(outf);
543 Error(
"TTabCom::GetListOfEnvVars",
"could not open file \"%s\"",
556 file1.ignore(32000,
'\n');
580 return gROOT->GetListOfGlobalFunctions(
true);
637 passwd.open(
"/etc/passwd");
641 passwd.ignore(32000,
'\n');
676 Int_t & nGoodStrings)
685 Bool_t atLeast1GoodString;
689 atLeast1GoodString =
kFALSE;
693 if ((pObj = next())) {
697 atLeast1GoodString =
kTRUE;
716 if ((pObj = next())) {
724 while (((
int) strlen(s) >= i && s[i] == ch0) ||
725 (atLeast1GoodString && !isGood));
743 assert(dirName != 0);
762 if (fileName ==
"." || fileName ==
"..")
804 assert(varName != 0);
805 IfDebug(std::cerr <<
"DetermineClass(\"" << varName <<
"\");" << std::endl);
809 if (!fout)
return "";
817 cmd =
"gROOT->ProcessLine(\"";
825 gROOT->ProcessLineSync(
".>");
831 std::ifstream file1(outf);
833 Error(
"TTabCom::DetermineClass",
"could not open file \"%s\"",
839 if (!file1 || c <= 0 || c ==
'*' || c !=
'(') {
840 Error(
"TTabCom::DetermineClass",
"variable \"%s\" not defined?",
844 IfDebug(std::cerr << (
char) c << std::flush);
850 if (type ==
"const" || type ==
"class") {
854 IfDebug(std::cerr << (
char) c << std::flush);
859 IfDebug(std::cerr << type << std::endl);
884 const char *fignore =
gEnv->
GetValue(
"TabCom.FileIgnore", (
char *) 0);
890 std::istringstream endings((
char *) fignore);
892 std::istrstream endings((
char *) fignore);
898 while (!ending.
IsNull()) {
961 if (!fout)
return "";
966 std::ifstream file1(outf);
968 Error(
"TTabCom::GetSysIncludePath",
"could not open file \"%s\"",
980 if (!token.IsNull()) {
983 path.
Append(token.Data() + 2);
995 TString sCINTSYSDIR(
"$ROOTSYS/cint");
997 TString sCINTSYSDIR(CINTINCDIR);
999 path.
Append(
":" + sCINTSYSDIR +
"/include");
1003 path.
Append(
":/usr/include");
1042 if (!path1[0]) path1 =
".";
1046 std::istringstream path((
char *) path1);
1048 std::istrstream path((
char *) path1);
1058 IfDebug(std::cerr <<
"NewListOfFilesInPath(): dirName = " << dirName <<
1080 char c1 = (fileName.
Length() > 0) ? fileName[0] : 0;
1081 return c1 ==
'/' || c1 ==
'~' || c1 ==
'$' || fileName.
BeginsWith(
"./")
1113 const Int_t kNotDefined = -2;
1114 static Int_t old_level = kNotDefined;
1118 if (old_level == kNotDefined) {
1119 std::cerr <<
"NoMsg(): ERROR 1. old_level==" << old_level << std::endl;
1124 old_level = kNotDefined;
1127 if (old_level != kNotDefined) {
1128 std::cerr <<
"NoMsg(): ERROR 2. old_level==" << old_level << std::endl;
1155 const char appendage[],
1167 IfDebug(std::cerr <<
"TTabCom::Complete() ..." << std::endl);
1169 assert(pListOfCandidates != 0);
1172 const int loc = *
fpLoc;
1188 int start = s2.
Index(re);
1190 IfDebug(std::cerr <<
" s1: " << s1 << std::endl);
1191 IfDebug(std::cerr <<
" s2: " << s2 << std::endl);
1192 IfDebug(std::cerr <<
" s3: " << s3 << std::endl);
1193 IfDebug(std::cerr <<
"start: " << start << std::endl);
1194 IfDebug(std::cerr << std::endl);
1200 TList listOfMatches;
1201 TList listOfFullPaths;
1207 TIter next_candidate(pListOfCandidates);
1208 TIter next_match(&listOfMatches);
1209 TIter next_fullpath(&listOfFullPaths);
1212 while ((pObj = next_candidate())) {
1214 const char *s4 = pObj->
GetName();
1219 const char *s5 = strrchr(s4,
'/');
1231 IfDebug(std::cerr <<
"adding " << s5 <<
'\t' << s4 << std::endl);
1239 IfDebug(std::cerr <<
"adding " << s5 <<
'\t' << s4 << std::endl);
1255 if (nMatches == 0) {
1264 if (nMatches == 1) {
1266 const char *short_name = next_match()->GetName();
1267 const char *full_name = next_fullpath()->GetName();
1269 pObj = pListOfCandidates->
FindObject(short_name);
1271 IfDebug(std::cerr << std::endl <<
"class: " << pObj->
ClassName() << std::endl);
1274 else if (className ==
"TMethod" || className ==
"TFunction") {
1280 }
else if (className ==
"TDataMember") {
1285 CopyMatch(match, short_name, appendage, full_name);
1294 IfDebug(std::cerr <<
" i=" << i <<
" ch=" << ch << std::endl);
1302 if (nGoodStrings == 1) {
1306 s = next_match()->GetName();
1307 s0 = next_fullpath()->GetName();
1314 IfDebug(std::cerr <<
"more than 1 GoodString" << std::endl);
1325 IfDebug(std::cerr <<
"printing ambiguous matches" << std::endl);
1326 std::set<std::string> alreadyPrinted;
1327 while ((pObj = next_match())) {
1329 if (alreadyPrinted.insert(s).second) {
1331 s0 = next_fullpath()->GetName();
1334 out << s <<
"/" << std::endl;
1336 out << s << std::endl;
1357 int i = strlen(
fBuf);
1358 int l = strlen(match) - (loc - start);
1362 Error(
"TTabCom::Complete",
"buffer overflow");
1367 IfDebug(std::cerr <<
" i=" << i << std::endl);
1368 IfDebug(std::cerr <<
" L=" << l << std::endl);
1369 IfDebug(std::cerr <<
"loc=" << loc << std::endl);
1372 for (; i >= loc; i -= 1) {
1377 strncpy(
fBuf + start, match, strlen(match));
1405 const char appendage[],
1406 const char fullName[])
const 1418 assert(localName != 0);
1421 strcpy(dest, localName);
1423 const char *key =
"filename";
1424 const int key_len = strlen(key);
1426 IfDebug(std::cerr <<
"CopyMatch()." << std::endl);
1427 IfDebug(std::cerr <<
"localName: " << (localName ? localName :
"0") <<
1429 IfDebug(std::cerr <<
"appendage: " << (appendage ? appendage :
"0") <<
1431 IfDebug(std::cerr <<
" fullName: " << (fullName ? fullName :
"0") <<
1436 if (appendage && strncmp(appendage, key, key_len) == 0) {
1438 appendage += key_len;
1439 IfDebug(std::cerr <<
"new appendage: " << appendage << std::endl);
1442 strcpy(dest + strlen(localName),
"/");
1445 strcpy(dest + strlen(localName), appendage);
1449 strcpy(dest + strlen(localName), appendage);
1463 for (
int context = 0; context <
kNUM_PAT; ++context) {
1466 IfDebug(std::cerr << std::endl
1467 <<
"context=" << context <<
" " 1468 <<
"RegExp=" <<
fRegExp[context]
1481 const char defaultPath[])
const 1487 if (end>0 && path[end]!=
'/' && path[end]!=
'\\') {
1496 if (fileName[end] !=
'/' && fileName[end] !=
'\\') {
1501 extendedPath =
ExtendPath(defaultPath, newBase);
1504 extendedPath = defaultPath;
1506 IfDebug(std::cerr << std::endl);
1507 IfDebug(std::cerr <<
" fileName: " << fileName << std::endl);
1508 IfDebug(std::cerr <<
" pathBase: " << newBase << std::endl);
1510 IfDebug(std::cerr <<
" defaultPath: " << defaultPath << std::endl);
1512 IfDebug(std::cerr <<
" defaultPath: " << std::endl);
1514 IfDebug(std::cerr <<
"extendedPath: " << extendedPath << std::endl);
1515 IfDebug(std::cerr << std::endl);
1517 return extendedPath;
1529 std::stringstream str;
1535 if (originalPath) str << originalPath;
1572 const char dummy[] =
".";
1580 std::cerr << std::endl <<
"tab completion not implemented for this context" <<
1589 pos =
Complete(
"[^~]*$", pListOfUsers,
"/", out);
1596 pos =
Complete(
"[^$]*$", pEnv,
"", out);
1604 const TString fileName = s3(
"[^ ><]*$");
1610 pos =
Complete(
"[^ /]*$", pListOfFiles,
"filename ", out);
1619 const TString fileName = s3(
"[^ ]*$");
1626 pos =
Complete(
"[^ /]*$", pListOfFiles,
"filename ", out);
1637 TString fileName = s3(
"[^<]*$");
1655 const TString fileName = s3(
"[^\"]*$");
1661 pos =
Complete(
"[^\"/]*$", pListOfFiles,
"filename\" ", out);
1673 const TString fileName = s3(
"[^\"]*$");
1678 pos =
Complete(
"[^\"/]*$", pListOfFiles,
"filename\");", out);
1684 const TString fileName = s3(
"[^ \"]*$");
1688 pos =
Complete(
"[^\" /]*$", pListOfFiles,
"filename\"", out);
1700 IfDebug(std::cerr << std::endl);
1701 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1706 TString partname = s3(
"[_a-zA-Z][_a-zA-Z0-9]*$");
1717 TString sym = str(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1721 prefix = sym + prefix;
1727 TString sym = prefix(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1730 IfDebug(std::cerr <<
"prefix: " <<
'"' << prefix <<
'"' << std::endl);
1731 IfDebug(std::cerr <<
"preprefix: " <<
'"' << preprefix <<
'"' << std::endl);
1734 if (namesp.
Length() >= 2)
1736 IfDebug(std::cerr <<
"namesp: " <<
'"' << namesp <<
'"' << std::endl);
1748 for (i = 0; i < tmp->
GetSize(); i++) {
1772 pos =
Complete(
"[^: ]*$", pList,
"", out);
1776 if (context != original_context)
1794 TString name = s1(
"[_a-zA-Z][-_a-zA-Z0-9<>():.]*$");
1796 IfDebug(std::cerr << std::endl);
1797 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1807 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1823 int* store_fpLoc =
fpLoc;
1824 char* store_fBuf =
fBuf;
1825 pos =
Complete(
"[^. ]*$", pList,
"(", out);
1827 fpLoc = store_fpLoc;
1834 pos =
Complete(
"[^> ]*$", pList,
"(", out);
1837 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1843 if (context != original_context)
1857 IfDebug(std::cerr << std::endl);
1858 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1863 TString partname = s3(
"[_a-zA-Z][_a-zA-Z0-9]* *($");
1874 TString sym = str(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1878 prefix = sym + prefix;
1884 TString sym = prefix(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1887 IfDebug(std::cerr <<
"prefix: " <<
'"' << prefix <<
'"' << std::endl);
1888 IfDebug(std::cerr <<
"preprefix: " <<
'"' << preprefix <<
'"' << std::endl);
1899 methodName = s3(
"[^:>\\.(]*($");
1903 IfDebug(std::cerr << methodName << std::endl);
1911 TIter nextMethod(pList);
1913 while ((pMethod = (
TMethod *) nextMethod())) {
1914 if (methodName == pMethod->
GetName()) {
1920 if (comment && comment[0] !=
'\0') {
1921 out <<
" \t// " << comment;
1938 if (context != original_context)
1954 name = s3(
"[_a-zA-Z][_a-zA-Z0-9:]* *($", 3);
1959 name = s3(
"^[_a-zA-Z][_a-zA-Z0-9:]*");
1962 IfDebug(std::cerr << std::endl);
1963 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1985 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1996 methodName =
name(
"[_a-zA-Z][_a-zA-Z0-9]*$");
1999 methodName = s3(
"[^:>\\.(]*($");
2003 IfDebug(std::cerr << methodName << std::endl);
2011 TIter nextMethod(pList);
2013 while ((pMethod = (
TMethod *) nextMethod())) {
2014 if (methodName == pMethod->
GetName()) {
2020 if (comment && comment[0] !=
'\0') {
2021 out <<
" \t// " << comment;
2038 if (context != original_context)
2049 if (l2 > l3 && s2[l2 - l3 - 1] ==
'.') {
2050 std::cerr << std::endl <<
2051 "tab completion not implemented for this context" << std::endl;
2055 if (l2 > l3 + 1 && s2(l2 - l3 - 2, 2) ==
"->") {
2056 std::cerr << std::endl <<
2057 "tab completion not implemented for this context" << std::endl;
2064 if (pL2) pList->
AddAll(pL2);
2068 if (pC1) pList->
AddAll(pC1);
2071 if (pC3) pList->
AddAll(pC3);
2073 pos =
Complete(
"[_a-zA-Z][_a-zA-Z0-9]*$", pList,
"", out);
2082 TString functionName = s3(
"[_a-zA-Z][_a-zA-Z0-9]*");
2083 IfDebug(std::cerr << functionName << std::endl);
2088 while ((pObj = nextGlobalFunc())) {
2089 if (strcmp(pObj->
GetName(), functionName) == 0) {
2090 listOfMatchingGlobalFuncs.
Add(pObj);
2094 if (listOfMatchingGlobalFuncs.
IsEmpty()) {
2095 std::cerr << std::endl <<
"no such function: " <<
dblquote(functionName)
2098 TIter next(&listOfMatchingGlobalFuncs);
2100 while ((pFunction = (
TFunction *) next())) {
2102 <<
" " << pFunction->
GetName()
2118 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
2167 "[_a-zA-Z][_a-zA-Z0-9:]* +[_a-zA-Z][_a-zA-Z0-9]* *($");
2169 "[_a-zA-Z][_a-zA-Z0-9]* *:: *[_a-zA-Z0-9]* *($");
2171 "[_a-zA-Z][_a-zA-Z0-9()]* *\\. *[_a-zA-Z0-9]* *($");
2173 "[_a-zA-Z][_a-zA-Z0-9()]* *-> *[_a-zA-Z0-9]* *($");
2176 "[_a-zA-Z][_a-zA-Z0-9]* *:: *[_a-zA-Z0-9]*$");
2178 "[_a-zA-Z][_a-zA-Z0-9()]* *\\. *[_a-zA-Z0-9()]*$");
2181 "[_a-zA-Z][_a-zA-Z0-9()]* *-> *[_a-zA-Z0-9()]*$");
2204 Error(
"TTabCom::MakeClassFromClassName",
"Unknown class \"%s\"", className);
2214 Error(
"TTabCom::MakeClassFromClassName",
"class \"%s\" is not defined.", className);
2262 (
gROOT->FindObject(varName) != 0);
2268 if (0) printf(
"varName is [%s] with iteration [%i]\n", varName, iter);
2274 if (!varName_exists && cut != 0)
2282 parentName[cut] = 0;
2283 if (0) printf(
"Parent string is [%s]\n", parentName.
Data());
2289 for(
Int_t i = cut-1; i>=0; --i) {
2290 switch (parentName[i]) {
2294 parentName = parentName(i+1,cut-i-1);
2306 if (varName[cut] ==
'.') {
2307 memberName = varName+cut+1;
2308 if (0) printf(
"Member/method is [%s]\n", memberName.
Data());
2312 memberName = varName+cut+2;
2313 if (0) printf(
"Member/method is [%s]\n", memberName.
Data());
2318 if (0) printf(
"I got [%s] from MakeClassFromVarName()\n", pclass->
GetName());
2322 if (0) printf(
"Variable [%s] exists!\n", parentName.
Data());
2325 if (iter == 0)
return pclass;
2327 if (0) printf(
"Trying data member [%s] of class [%s] ...\n",
2334 if (memberName == dmptr->GetName())
break;
2338 if (0) printf(
"It's a member!\n");
2340 TString returnName = dmptr->GetTypeName();
2351 char *parentesis_ptr = (
char*)strrchr(memberName.
Data(),
'(');
2352 if (parentesis_ptr) *parentesis_ptr = 0;
2355 if (0) printf(
"Trying method [%s] of class [%s] ...\n",
2362 while ((mptr = (
TMethod *) next())) {
2363 if (strcmp(memberName.
Data(),mptr->GetName())==0)
break;
2367 TString returnName = mptr->GetReturnTypeName();
2369 if (0) printf(
"It's a method called [%s] with return type [%s]\n",
2370 memberName.
Data(), returnName.
Data());
2373 if (returnName[returnName.
Length()-1] ==
'*')
2375 returnName[returnName.
Length()-1] = 0;
2395 if (!varName_exists) {
2396 std::cerr << std::endl <<
"variable " <<
dblquote(varName) <<
" not defined." 2412 if (className.
IsNull() || className ==
"*") {
2416 std::cerr << std::endl <<
"problem determining class of " <<
dblquote(varName)
2426 className[className.
Length()-1] = 0;
2455 Fatal(
"TTabCom::MakeClassFromVarName",
"Conext case %d not handled",context);
2461 for (i = *
fpLoc;
fBuf[i] !=
'.'; i -= 1) {
2464 for (i = strlen(
fBuf); i >= loc; i -= 1) {
2468 fBuf[loc + 1] =
'>';
2472 std::cerr << std::endl <<
dblquote(varName) <<
2473 " is of pointer type. Use this operator: ->" << std::endl;
2482 if (className[className.
Length() - 1] ==
'*') {
2483 std::cerr << std::endl <<
"can't handle pointers to pointers." << std::endl;
2502 Fatal(
"TTabCom::MakeClassFromVarName",
"Conext case %d not handled",context);
2508 for (i = *
fpLoc;
fBuf[i - 1] !=
'-' &&
fBuf[i] !=
'>'; i -= 1) {
2511 int len = strlen(
fBuf);
2512 for (; i < len; i += 1) {
2518 std::cerr << std::endl <<
dblquote(varName) <<
2519 " is not of pointer type. Use this operator: ." << std::endl;
2536 std::cerr << std::endl
2538 << (int) handle <<
" >= kNUM_PAT=" << (
int)
kNUM_PAT << std::endl;
2557 if (start > (
int)strlen(var_str)) start = strlen(var_str);
2559 for (
int i = start; i > 0; i--)
2561 if (var_str[i] ==
'.')
return i;
2562 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.
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
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
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
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
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]