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"))
447 const char* className =
gInterpreter->ClassInfo_FullName(ci);
448 if (strstr(className,
"(anonymous)"))
493 if (path &&
fpFiles && strcmp(path, previousPath) == 0) {
532 std::ifstream file1(outf);
534 Error(
"TTabCom::GetListOfEnvVars",
"could not open file \"%s\"",
547 file1.ignore(32000,
'\n');
571 return gROOT->GetListOfGlobalFunctions(
true);
628 passwd.open(
"/etc/passwd");
632 passwd.ignore(32000,
'\n');
667 Int_t & nGoodStrings)
676 Bool_t atLeast1GoodString;
680 atLeast1GoodString =
kFALSE;
684 if ((pObj =
next())) {
688 atLeast1GoodString =
kTRUE;
707 if ((pObj =
next())) {
715 while (((
int) strlen(s) >= i && s[i] == ch0) ||
716 (atLeast1GoodString && !isGood));
753 if (fileName ==
"." || fileName ==
"..")
796 IfDebug(std::cerr <<
"DetermineClass(\"" << varName <<
"\");" << std::endl);
800 if (!fout)
return "";
808 cmd =
"gROOT->ProcessLine(\"";
816 gROOT->ProcessLineSync(
".>");
822 std::ifstream file1(outf);
824 Error(
"TTabCom::DetermineClass",
"could not open file \"%s\"",
830 if (!file1 || c <= 0 || c ==
'*' || c !=
'(') {
831 Error(
"TTabCom::DetermineClass",
"variable \"%s\" not defined?",
835 IfDebug(std::cerr << (
char) c << std::flush);
841 if (type ==
"const" || type ==
"class") {
845 IfDebug(std::cerr << (
char) c << std::flush);
850 IfDebug(std::cerr << type << std::endl);
875 const char *fignore =
gEnv->
GetValue(
"TabCom.FileIgnore", (
char *) 0);
881 std::istringstream endings((
char *) fignore);
883 std::istrstream endings((
char *) fignore);
889 while (!ending.
IsNull()) {
952 if (!fout)
return "";
957 std::ifstream file1(outf);
959 Error(
"TTabCom::GetSysIncludePath",
"could not open file \"%s\"",
971 if (!token.IsNull()) {
974 path.
Append(token.Data() + 2);
986 TString sCINTSYSDIR(
"$ROOTSYS/cint");
988 TString sCINTSYSDIR(CINTINCDIR);
990 path.
Append(
":" + sCINTSYSDIR +
"/include");
994 path.
Append(
":/usr/include");
1033 if (!path1[0]) path1 =
".";
1037 std::istringstream path((
char *) path1);
1039 std::istrstream path((
char *) path1);
1049 IfDebug(std::cerr <<
"NewListOfFilesInPath(): dirName = " << dirName <<
1071 char c1 = (fileName.
Length() > 0) ? fileName[0] : 0;
1072 return c1 ==
'/' || c1 ==
'~' || c1 ==
'$' || fileName.
BeginsWith(
"./")
1104 const Int_t kNotDefined = -2;
1105 static Int_t old_level = kNotDefined;
1109 if (old_level == kNotDefined) {
1110 std::cerr <<
"NoMsg(): ERROR 1. old_level==" << old_level << std::endl;
1115 old_level = kNotDefined;
1118 if (old_level != kNotDefined) {
1119 std::cerr <<
"NoMsg(): ERROR 2. old_level==" << old_level << std::endl;
1146 const char appendage[],
1158 IfDebug(std::cerr <<
"TTabCom::Complete() ..." << std::endl);
1160 assert(pListOfCandidates != 0);
1163 const int loc = *
fpLoc;
1179 int start = s2.
Index(re);
1181 IfDebug(std::cerr <<
" s1: " << s1 << std::endl);
1182 IfDebug(std::cerr <<
" s2: " << s2 << std::endl);
1183 IfDebug(std::cerr <<
" s3: " << s3 << std::endl);
1184 IfDebug(std::cerr <<
"start: " << start << std::endl);
1185 IfDebug(std::cerr << std::endl);
1191 TList listOfMatches;
1192 TList listOfFullPaths;
1198 TIter next_candidate(pListOfCandidates);
1199 TIter next_match(&listOfMatches);
1200 TIter next_fullpath(&listOfFullPaths);
1203 while ((pObj = next_candidate())) {
1205 const char *s4 = pObj->
GetName();
1210 const char *s5 = strrchr(s4,
'/');
1222 IfDebug(std::cerr <<
"adding " << s5 <<
'\t' << s4 << std::endl);
1230 IfDebug(std::cerr <<
"adding " << s5 <<
'\t' << s4 << std::endl);
1246 if (nMatches == 0) {
1255 if (nMatches == 1) {
1257 const char *short_name = next_match()->GetName();
1258 const char *full_name = next_fullpath()->GetName();
1260 pObj = pListOfCandidates->
FindObject(short_name);
1262 IfDebug(std::cerr << std::endl <<
"class: " << pObj->
ClassName() << std::endl);
1265 else if (className ==
"TMethod" || className ==
"TFunction") {
1271 }
else if (className ==
"TDataMember") {
1276 CopyMatch(match, short_name, appendage, full_name);
1285 IfDebug(std::cerr <<
" i=" << i <<
" ch=" << ch << std::endl);
1293 if (nGoodStrings == 1) {
1297 s = next_match()->GetName();
1298 s0 = next_fullpath()->GetName();
1305 IfDebug(std::cerr <<
"more than 1 GoodString" << std::endl);
1316 IfDebug(std::cerr <<
"printing ambiguous matches" << std::endl);
1318 std::set<std::string> alreadyPrinted;
1319 while ((pObj = next_match())) {
1321 if (alreadyPrinted.insert(s).second) {
1323 s0 = next_fullpath()->GetName();
1326 out << s <<
"/" << std::endl;
1328 out << s << std::endl;
1349 int i = strlen(
fBuf);
1350 int l = strlen(match) - (loc - start);
1354 Error(
"TTabCom::Complete",
"buffer overflow");
1359 IfDebug(std::cerr <<
" i=" << i << std::endl);
1360 IfDebug(std::cerr <<
" L=" << l << std::endl);
1361 IfDebug(std::cerr <<
"loc=" << loc << std::endl);
1364 for (; i >= loc; i -= 1) {
1369 strncpy(
fBuf + start, match, strlen(match));
1397 const char appendage[],
1398 const char fullName[])
const
1413 strcpy(dest, localName);
1415 const char *key =
"filename";
1416 const int key_len = strlen(key);
1418 IfDebug(std::cerr <<
"CopyMatch()." << std::endl);
1419 IfDebug(std::cerr <<
"localName: " << (localName ? localName :
"0") <<
1421 IfDebug(std::cerr <<
"appendage: " << (appendage ? appendage :
"0") <<
1423 IfDebug(std::cerr <<
" fullName: " << (fullName ? fullName :
"0") <<
1428 if (appendage && strncmp(appendage, key, key_len) == 0) {
1430 appendage += key_len;
1431 IfDebug(std::cerr <<
"new appendage: " << appendage << std::endl);
1434 strcpy(dest + strlen(localName),
"/");
1437 strcpy(dest + strlen(localName), appendage);
1441 strcpy(dest + strlen(localName), appendage);
1455 for (
int context = 0; context <
kNUM_PAT; ++context) {
1458 IfDebug(std::cerr << std::endl
1459 <<
"context=" << context <<
" "
1460 <<
"RegExp=" <<
fRegExp[context]
1473 const char defaultPath[])
const
1479 if (end>0 && path[end]!=
'/' && path[end]!=
'\\') {
1488 if (fileName[end] !=
'/' && fileName[end] !=
'\\') {
1493 extendedPath =
ExtendPath(defaultPath, newBase);
1496 extendedPath = defaultPath;
1498 IfDebug(std::cerr << std::endl);
1499 IfDebug(std::cerr <<
" fileName: " << fileName << std::endl);
1500 IfDebug(std::cerr <<
" pathBase: " << newBase << std::endl);
1502 IfDebug(std::cerr <<
" defaultPath: " << defaultPath << std::endl);
1504 IfDebug(std::cerr <<
" defaultPath: " << std::endl);
1506 IfDebug(std::cerr <<
"extendedPath: " << extendedPath << std::endl);
1507 IfDebug(std::cerr << std::endl);
1509 return extendedPath;
1521 std::stringstream str;
1527 if (originalPath) str << originalPath;
1564 const char dummy[] =
".";
1572 std::cerr << std::endl <<
"tab completion not implemented for this context" <<
1581 pos =
Complete(
"[^~]*$", pListOfUsers,
"/", out);
1588 pos =
Complete(
"[^$]*$", pEnv,
"", out);
1596 const TString fileName = s3(
"[^ ><]*$");
1602 pos =
Complete(
"[^ /]*$", pListOfFiles,
"filename ", out);
1611 const TString fileName = s3(
"[^ ]*$");
1618 pos =
Complete(
"[^ /]*$", pListOfFiles,
"filename ", out);
1629 TString fileName = s3(
"[^<]*$");
1647 const TString fileName = s3(
"[^\"]*$");
1653 pos =
Complete(
"[^\"/]*$", pListOfFiles,
"filename\" ", out);
1665 const TString fileName = s3(
"[^\"]*$");
1671 pos =
Complete(
"[^\"/]*$", pListOfFiles,
"filename\");", out);
1677 const TString fileName = s3(
"[^ \"]*$");
1681 pos =
Complete(
"[^\" /]*$", pListOfFiles,
"filename\"", out);
1693 IfDebug(std::cerr << std::endl);
1694 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1699 TString partname = s3(
"[_a-zA-Z][_a-zA-Z0-9]*$");
1710 TString sym = str(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1714 prefix = sym + prefix;
1720 TString sym = prefix(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1723 IfDebug(std::cerr <<
"prefix: " <<
'"' << prefix <<
'"' << std::endl);
1724 IfDebug(std::cerr <<
"preprefix: " <<
'"' << preprefix <<
'"' << std::endl);
1727 if (namesp.
Length() >= 2)
1729 IfDebug(std::cerr <<
"namesp: " <<
'"' << namesp <<
'"' << std::endl);
1741 for (i = 0; i < tmp->
GetSize(); i++) {
1765 pos =
Complete(
"[^: ]*$", pList,
"", out);
1769 if (context != original_context)
1787 TString name = s1(
"[_a-zA-Z][-_a-zA-Z0-9<>():.]*$");
1789 IfDebug(std::cerr << std::endl);
1790 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1800 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1816 int* store_fpLoc =
fpLoc;
1817 char* store_fBuf =
fBuf;
1818 pos =
Complete(
"[^. ]*$", pList,
"(", out);
1820 fpLoc = store_fpLoc;
1827 pos =
Complete(
"[^> ]*$", pList,
"(", out);
1830 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1836 if (context != original_context)
1850 IfDebug(std::cerr << std::endl);
1851 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1856 TString partname = s3(
"[_a-zA-Z][_a-zA-Z0-9]* *($");
1867 TString sym = str(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1871 prefix = sym + prefix;
1877 TString sym = prefix(
"[_a-zA-Z][_a-zA-Z0-9]*::$");
1880 IfDebug(std::cerr <<
"prefix: " <<
'"' << prefix <<
'"' << std::endl);
1881 IfDebug(std::cerr <<
"preprefix: " <<
'"' << preprefix <<
'"' << std::endl);
1892 methodName = s3(
"[^:>\\.(]*($");
1896 IfDebug(std::cerr << methodName << std::endl);
1904 TIter nextMethod(pList);
1906 while ((pMethod = (
TMethod *) nextMethod())) {
1907 if (methodName == pMethod->
GetName()) {
1913 if (comment && comment[0] !=
'\0') {
1931 if (context != original_context)
1947 name = s3(
"[_a-zA-Z][_a-zA-Z0-9:]* *($", 3);
1952 name = s3(
"^[_a-zA-Z][_a-zA-Z0-9:]*");
1955 IfDebug(std::cerr << std::endl);
1956 IfDebug(std::cerr <<
"name: " <<
'"' << name <<
'"' << std::endl);
1978 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
1989 methodName =
name(
"[_a-zA-Z][_a-zA-Z0-9]*$");
1992 methodName = s3(
"[^:>\\.(]*($");
1996 IfDebug(std::cerr << methodName << std::endl);
2004 TIter nextMethod(pList);
2006 while ((pMethod = (
TMethod *) nextMethod())) {
2007 if (methodName == pMethod->
GetName()) {
2013 if (comment && comment[0] !=
'\0') {
2031 if (context != original_context)
2042 if (l2 > l3 && s2[l2 - l3 - 1] ==
'.') {
2043 std::cerr << std::endl <<
2044 "tab completion not implemented for this context" << std::endl;
2048 if (l2 > l3 + 1 && s2(l2 - l3 - 2, 2) ==
"->") {
2049 std::cerr << std::endl <<
2050 "tab completion not implemented for this context" << std::endl;
2057 if (pL2) pList->
AddAll(pL2);
2061 if (pC1) pList->
AddAll(pC1);
2064 if (pC3) pList->
AddAll(pC3);
2066 pos =
Complete(
"[_a-zA-Z][_a-zA-Z0-9]*$", pList,
"", out);
2075 TString functionName = s3(
"[_a-zA-Z][_a-zA-Z0-9]*");
2076 IfDebug(std::cerr << functionName << std::endl);
2081 while ((pObj = nextGlobalFunc())) {
2082 if (strcmp(pObj->
GetName(), functionName) == 0) {
2083 listOfMatchingGlobalFuncs.
Add(pObj);
2087 if (listOfMatchingGlobalFuncs.
IsEmpty()) {
2088 std::cerr << std::endl <<
"no such function: " <<
dblquote(functionName)
2096 <<
" " << pFunction->
GetName()
2112 Fatal(
"TTabCom::Hook",
"Conext case %d not handled",context);
2161 "[_a-zA-Z][_a-zA-Z0-9:]* +[_a-zA-Z][_a-zA-Z0-9]* *($");
2163 "[_a-zA-Z][_a-zA-Z0-9]* *:: *[_a-zA-Z0-9]* *($");
2165 "[_a-zA-Z][_a-zA-Z0-9()]* *\\. *[_a-zA-Z0-9]* *($");
2167 "[_a-zA-Z][_a-zA-Z0-9()]* *-> *[_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()]*$");
2175 "[_a-zA-Z][_a-zA-Z0-9()]* *-> *[_a-zA-Z0-9()]*$");
2198 Error(
"TTabCom::MakeClassFromClassName",
"Unknown class \"%s\"", className);
2208 Error(
"TTabCom::MakeClassFromClassName",
"class \"%s\" is not defined.", className);
2256 (
gROOT->FindObject(varName) != 0);
2262 if (0)
printf(
"varName is [%s] with iteration [%i]\n", varName, iter);
2268 if (!varName_exists && cut != 0)
2276 parentName[cut] = 0;
2277 if (0)
printf(
"Parent string is [%s]\n", parentName.
Data());
2283 for(
Int_t i = cut-1; i>=0; --i) {
2284 switch (parentName[i]) {
2288 parentName = parentName(i+1,cut-i-1);
2300 if (varName[cut] ==
'.') {
2301 memberName = varName+cut+1;
2302 if (0)
printf(
"Member/method is [%s]\n", memberName.
Data());
2306 memberName = varName+cut+2;
2307 if (0)
printf(
"Member/method is [%s]\n", memberName.
Data());
2312 if (0)
printf(
"I got [%s] from MakeClassFromVarName()\n", pclass->
GetName());
2316 if (0)
printf(
"Variable [%s] exists!\n", parentName.
Data());
2319 if (iter == 0)
return pclass;
2321 if (0)
printf(
"Trying data member [%s] of class [%s] ...\n",
2328 if (memberName == dmptr->GetName())
break;
2332 if (0)
printf(
"It's a member!\n");
2334 TString returnName = dmptr->GetTypeName();
2345 char *parentesis_ptr = (
char*)strrchr(memberName.
Data(),
'(');
2346 if (parentesis_ptr) *parentesis_ptr = 0;
2349 if (0)
printf(
"Trying method [%s] of class [%s] ...\n",
2357 if (strcmp(memberName.
Data(),mptr->GetName())==0)
break;
2361 TString returnName = mptr->GetReturnTypeName();
2363 if (0)
printf(
"It's a method called [%s] with return type [%s]\n",
2364 memberName.
Data(), returnName.
Data());
2367 if (returnName[returnName.
Length()-1] ==
'*')
2369 returnName[returnName.
Length()-1] = 0;
2389 if (!varName_exists) {
2390 std::cerr << std::endl <<
"variable " <<
dblquote(varName) <<
" not defined."
2406 if (className.
IsNull() || className ==
"*") {
2410 std::cerr << std::endl <<
"problem determining class of " <<
dblquote(varName)
2420 className[className.
Length()-1] = 0;
2449 Fatal(
"TTabCom::MakeClassFromVarName",
"Conext case %d not handled",context);
2455 for (i = *
fpLoc;
fBuf[i] !=
'.'; i -= 1) {
2458 for (i = strlen(
fBuf); i >= loc; i -= 1) {
2462 fBuf[loc + 1] =
'>';
2466 std::cerr << std::endl <<
dblquote(varName) <<
2467 " is of pointer type. Use this operator: ->" << std::endl;
2476 if (className[className.
Length() - 1] ==
'*') {
2477 std::cerr << std::endl <<
"can't handle pointers to pointers." << std::endl;
2496 Fatal(
"TTabCom::MakeClassFromVarName",
"Conext case %d not handled",context);
2502 for (i = *
fpLoc;
fBuf[i - 1] !=
'-' &&
fBuf[i] !=
'>'; i -= 1) {
2505 int len = strlen(
fBuf);
2506 for (; i < len; i += 1) {
2512 std::cerr << std::endl <<
dblquote(varName) <<
2513 " is not of pointer type. Use this operator: ." << std::endl;
2530 std::cerr << std::endl
2532 << (int) handle <<
" >= kNUM_PAT=" << (
int)
kNUM_PAT << std::endl;
2551 if (start > (
int)strlen(var_str)) start = strlen(var_str);
2553 for (
int i = start; i > 0; i--)
2555 if (var_str[i] ==
'.')
return i;
2556 if (var_str[i] ==
'>' && i > 0 && var_str[i-1] ==
'-')
return i-1;
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
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
ClassImp(TSeqCollection) Int_t TSeqCollection TIter next(this)
Return index of object in collection.
void Fatal(const char *location, const char *msgfmt,...)
Collectable string class.
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.
const char * GetReturnTypeName() const
Get full type description of function return type, e,g.: "class TDirectory*".
Int_t GetNargs() const
Number of function arguments.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
TSeqCollection * fpEnvVars
Regular expression class.
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)
void ClearCppDirectives()
Forget all Cpp directives seen so far.
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
void RehashPragmas()
Reload pragmas.
static TString DetermineClass(const char varName[])
[static utility function]/////////////////////////////
static const char * GetMacroPath()
Get macro search path. Static utility function.
const char * Data() const
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 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".
virtual Bool_t IsEmpty() const
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.
int Makepat(const char *, Pattern_t *, int)
Make a pattern template from the string pointed to by exp.
std::map< std::string, std::string >::const_iterator iter
virtual void AddAll(const TCollection *col)
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)
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.
TString ExtendPath(const char originalPath[], TString newBase) const
[private]
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
TClass * TryMakeClassFromClassName(const char className[]) const
Same as above but does not print the error message.
R__EXTERN TSystem * gSystem
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
Collection abstract base class.
TSeqCollection * fpSysIncFiles
void ClearUsers()
Forget all user seen so far.
virtual const char * GetName() const
Returns name of object.
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.
std::istream & ReadToDelim(std::istream &str, char delim= '\n')
Read up to an EOF, or a delimiting character, whichever comes first.
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.
void CopyMatch(char dest[], const char localName[], const char appendage[]=0, const char fullName[]=0) const
[private]
ClassImp(TTabCom) TTabCom *gTabCom=0
virtual Int_t GetSize() const
virtual const char * GetName() const
Returns name of object.
virtual int DisplayIncludePath(FILE *) const
static Bool_t PathIsSpecifiedInFileName(const TString &fileName)
[static utility function]/////////////////////////////
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
static RooMathCoreReg dummy
Bool_t Contains(const char *name) 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
TString DeterminePath(const TString &fileName, const char defaultPath[]) const
[private]
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.
Bool_t R_ISDIR(Int_t mode)
virtual void Add(TObject *obj)
#define dest(otri, vertexptr)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
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]/////////////////////////////
TClass * MakeClassFromClassName(const char className[]) const
private returns a new'd TClass given the name of a class.
static TString GetSysIncludePath()
[static utility function]/////////////////////////////
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]
EContext_t DetermineContext() const
[private]
virtual Bool_t ExpandPathName(TString &path)
Expand a pathname getting rid of special shell characters like ~.
R__EXTERN TInterpreter * gCling
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
const TSeqCollection * GetListOfEnvVars()
Uses "env" (Unix) or "set" (Windows) to get list of environment variables.
R__EXTERN TTabCom * gTabCom
#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.
void RehashFiles()
Close files.
Pattern_t fPat[kNUM_PAT][MAX_LEN_PAT]