23 #include "TClassEdit.h"
74 Getlinem(kCleanUp, 0);
90 Bool_t TInterruptHandler::Notify()
101 Break(
"TInterruptHandler::Notify",
"keyboard interrupt");
102 Getlinem(kInit,
"Root > ");
129 Bool_t TTermInputHandler::Notify()
145 TApplication(appClassName, argc, argv, options, numOptions),
149 fDefaultPrompt =
"root [%d] ";
154 if (!noLogo && !NoLogoOpt()) {
179 code =
"#include <iostream>\n"
180 "#include <string>\n"
181 "#include <DllImport.h>\n";
183 code +=
"#include <vector>\n"
184 "#include <utility>";
186 ProcessLine(code,
kTRUE);
207 TInterruptHandler *ih =
new TInterruptHandler();
209 SetSignalHandler(ih);
212 fInputHandler =
new TTermInputHandler(0);
213 fInputHandler->Add();
223 int hist_size =
gEnv->
GetValue(
"Rint.HistorySize", 500);
224 if (hist_size == 500)
226 int hist_save =
gEnv->
GetValue(
"Rint.HistorySave", 400);
227 if (hist_save == 400)
231 hist_size = atoi(envHist);
232 envHist = strchr(envHist,
':');
234 hist_save = atoi(envHist+1);
236 Gl_histsize(hist_size, hist_save);
237 Gl_histinit((
char *)logon);
240 static const char* defaultColorsBW[] = {
241 "bold blue",
"magenta",
"bold green",
"bold red underlined",
"default"
243 static const char* defaultColorsWB[] = {
244 "yellow",
"magenta",
"bold green",
"bold red underlined",
"default"
247 const char** defaultColors = defaultColorsBW;
250 defaultColors = defaultColorsWB;
257 Gl_setColors(colorType, colorTabCom, colorBracket, colorBadBracket, colorPrompt);
324 const char *logon =
gEnv->
GetValue(
"Rint.Logon", (
char*)0);
358 TObject *w =
gROOT->GetListOfBrowsables()->FindObject(
"workdir");
378 retval = 0; error = 0;
400 const char *rfile = (
const char*)file->
String();
401 Printf(
"Attaching file %s as _file%d...", rfile, nfile);
404 Printf(
"Processing %s...", (
const char*)file->
String());
408 Getlinem(kCleanUp, 0);
415 needGetlinemInit =
kFALSE;
421 needGetlinemInit =
kTRUE;
435 if (retval < 0 || retval > 255)
446 if (needGetlinemInit) Getlinem(kInit,
GetPrompt());
460 Getlinem(kCleanUp, 0);
471 std::vector<TString> lines;
473 lines.emplace_back(
TString::Format(
"Welcome to ROOT %s%%shttp://root.cern.ch",
474 gROOT->GetVersion()));
475 lines.emplace_back(
TString::Format(
"%%s(c) 1995-2017, The ROOT Team"));
477 if (!strcmp(
gROOT->GetGitBranch(),
gROOT->GetGitCommit())) {
478 static const char *months[] = {
"January",
"February",
"March",
"April",
"May",
479 "June",
"July",
"August",
"September",
"October",
480 "November",
"December"};
482 Int_t iday = idatqq%100;
483 Int_t imonth = (idatqq/100)%100;
484 Int_t iyear = (idatqq/10000);
487 gROOT->GetGitBranch(),
488 iday,months[imonth-1],iyear));
493 gROOT->GetGitBranch(),
496 lines.emplace_back(
TString(
"Try '.help', '.demo', '.license', '.credits', '.quit'/'.q'%s"));
499 auto itLongest = std::max_element(lines.begin(), lines.end(),
501 return left.
Length() < right.Length(); });
502 Ssiz_t lenLongest = itLongest->Length();
506 for (
const auto&
line: lines) {
518 for (
int i = 0; i <
Argc(); i++)
519 if (!strcmp(
Argv(i),
"-splash"))
520 kill(getppid(), SIGUSR1);
552 if (newPrompt && strlen(newPrompt) <= 55)
555 Error(
"SetPrompt",
"newPrompt too long (> 55 characters)");
568 if ((line = Getlinem(kOneChar, 0))) {
569 if (line[0] == 0 && Gl_eof())
579 sline = sline.
Chop();
592 TTHREAD_TLS(
Bool_t) added;
611 catch (std::exception&
e) {
616 char *demangledType_c = TClassEdit::DemangleTypeIdName(
typeid(e), err);
617 const char* demangledType = demangledType_c;
619 demangledType_c =
nullptr;
620 demangledType =
"<UNKNOWN>";
622 Error(
"HandleTermInput()",
"%s caught: %s", demangledType, e.what());
623 free(demangledType_c);
628 Error(
"HandleTermInput()",
"Exception caught!");
655 Getlinem(kCleanUp, 0);
656 Getlinem(kInit,
"Root > ");
668 Getlinem(kCleanUp, 0);
698 Gl_config(
"noecho", mode ? 0 : 1);
739 if (line && line[0] !=
'.') {
745 SetPrompt(
"root (cont'ed, cancel with .@) [%d]");
752 if (line && line[0] ==
'.' && line[1] ==
'@') {
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
void Print(Option_t *option="") const
Print the real and cpu time passed between the start and stop events.
virtual Long_t ProcessLine(const char *line, Bool_t sync=kFALSE, Int_t *error=0)
Process a single command line, either a C++ statement or an interpreter command starting with a "...
virtual void Terminate(int status)
Terminate the application.
virtual Bool_t Notify()
Notify when event occurred on descriptor associated with this handler.
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
virtual const char * WorkingDirectory()
Return working directory.
void Activate()
Activate a system event handler.
Collectable string class.
R__EXTERN TClassTable * gClassTable
virtual const char * GetBuildArch() const
Return the build architecture.
TString & ReplaceAll(const TString &s1, const TString &s2)
virtual Bool_t HandleTermInput()
Handle input coming from terminal.
virtual const char * HomeDirectory(const char *userName=0)
Return the user's home directory.
virtual Bool_t ChangeDirectory(const char *path)
Change directory.
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
Long_t ProcessLineNr(const char *filestem, const char *line, Int_t *error=0)
Calls ProcessLine() possibly prepending a line directive for better diagnostics.
virtual void ReturnPressed(char *text)
Emit signal when return key was pressed.
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
void Break(const char *location, const char *msgfmt,...)
virtual void Terminate(Int_t status=0)
Terminate the application by call TSystem::Exit() unless application has been told to return from Run...
TString & Prepend(const char *cs)
R__EXTERN TApplication * gApplication
virtual Long_t ProcessRemote(const char *line, Int_t *error=0)
Process the content of a line starting with ".R" (already stripped-off) The format is [user@]host[:...
TObjArray * InputFiles() const
virtual void SetGetline(const char *(*getlineFunc)(const char *prompt), void(*histaddFunc)(const char *line))=0
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
void DeActivate()
De-activate a system event handler.
Bool_t ReturnFromRun() const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual Bool_t HandleTermInput()
static const char * GetMacroPath()
Get macro search path. Static utility function.
const char * Data() const
virtual void EndOfLineAction()=0
virtual void SetOption(Option_t *)
virtual Bool_t Notify()
Notify when signal occurs.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
void ExecLogon()
Execute logon macro's.
virtual void Run(Bool_t retrn=kFALSE)
Main application eventloop. Calls system dependent eventloop via gSystem.
virtual void SetEchoMode(Bool_t mode)
Set console mode:
R__EXTERN void * gMmallocDesc
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
void Clear()
Clear string without changing its capacity.
Int_t Hook(char *buf, int *pLoc, std::ostream &out)
[private]
virtual const char * Getenv(const char *env)
Get environment variable.
std::vector< std::vector< double > > Data
static void ResetTermAtExit()
Restore terminal to non-raw mode.
virtual void ExitLoop()
Exit from event loop.
virtual Int_t GetMore() const =0
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void ClearAll()
clears all lists except for user names and system include files.
virtual const char * SetPrompt(const char *newPrompt)
Set a new default prompt.
Describes an Operating System directory for the browser.
virtual Int_t TabCompletionHook(char *buf, int *pLoc, std::ostream &out)
Forward tab completion request to our TTabCom::Hook().
void ClearInputFiles()
Clear list containing macro files passed as program arguments.
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
R__EXTERN TSystem * gSystem
R__EXTERN TBenchmark * gBenchmark
virtual Int_t GetValue(const char *name, Int_t dflt)
Returns the integer value for a resource.
virtual void HandleException(Int_t sig)
Handle signals (kSigBus, kSigSegmentationViolation, kSigIllegalInstruction and kSigFloatingException)...
TObject * GetObject() const
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Bool_t TestBit(UInt_t f) const
char * Form(const char *fmt,...)
TSubString Strip(EStripType s=kTrailing, char c= ' ') const
Return a substring of self stripped at beginning and/or end.
virtual void SaveContext()=0
TApplication * fAppRemote
This class is a ROOT utility to help benchmarking applications.
virtual void Run(Bool_t retrn=kFALSE)
Main application eventloop.
virtual void PrintLogo(Bool_t lite=kFALSE)
Print the ROOT logo on standard output.
R__EXTERN ExceptionContext_t * gException
TString fNonContinuePrompt
virtual char * GetPrompt()=0
Long_t ProcessRemote(const char *line, Int_t *error=0)
Process the content of a line starting with ".R" (already stripped-off) The format is [user@]host[:...
static DictFuncPtr_t GetDict(const char *cname)
Given the class name returns the Dictionary() function of a class (uses hash of name).
virtual void KeyPressed(Int_t key)
Emit signal when console keyboard key was pressed.
Wrapper around a TObject so it can be stored in a TList.
static Int_t Key_Pressed(Int_t key)
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
void Beep(Int_t freq=-1, Int_t duration=-1, Bool_t setDefault=kFALSE)
Beep for duration milliseconds with a tone of frequency freq.
virtual void LineProcessed(const char *line)
Emit signal when a line has been processed.
virtual void Remove()
Remove file event handler from system file handler list.
virtual void SaveGlobalsContext()=0
void Throw(int code)
If an exception context has been set (using the TRY and RETRY macros) jump back to where it was set...
Mother of all ROOT objects.
virtual void HandleException(Int_t sig)
Handle exceptions (kSigBus, kSigSegmentationViolation, kSigIllegalInstruction and kSigFloatingExcepti...
virtual char * GetPrompt()
Get prompt from interpreter. Either "root [n]" or "end with '}'".
virtual ~TRint()
Destructor.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
virtual Bool_t ReadNotify()
Notify when something can be read from the descriptor associated with this handler.
const char * WorkingDirectory() const
This class creates the ROOT Application Environment that interfaces to the windowing system eventloop...
R__EXTERN TInterpreter * gCling
virtual const char * ApplicationName() const
R__EXTERN TTabCom * gTabCom
virtual char * ConcatFileName(const char *dir, const char *name)
Concatenate a directory and a file name. User must delete returned string.
TFileHandler * fInputHandler
void SetObject(TObject *obj)
virtual Long_t ProcessFile(const char *file, Int_t *error=0, Bool_t keep=kFALSE)
Process a file containing a C++ macro.