Geant4 11.3.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VBasicShell.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28
29#ifndef G4VBasicShell_H
30#define G4VBasicShell_H 1
31
32class G4UIcommandTree;
33class G4UIcommand;
34
35#include "G4UIsession.hh"
36#include "globals.hh"
37
38// Class description :
39//
40// G4VBasicShell : a base class to extract common things to various
41// sessions.
42//
43// It handles "seek" completion logic, help logic.
44// VBasicShell handles also commands like "cd, ls, pwd"
45// without passing by a Geant4 "intercom" command. This feature,
46// which is similar to a UNIX shell one, had given.
47// its name to the class.
48//
49// Class description - end :
50
52{
53 public:
55 ~G4VBasicShell() override;
56
57 G4UIsession* SessionStart() override = 0;
58 // null should be returned for interactive session
59
60 void PauseSessionStart(const G4String& Prompt) override = 0;
61 // Prompt string can be ignored
62
63 protected:
64 // convert "BeamOn 10" to "/run/BeamOn 10" if the
65 // current working directory is "/run/"
66 G4String ModifyToFullPathCommand(const char* aCommandLine) const;
67
68 // directory string starts with '/' and ends with '/'
70
71 // change directory to newDir
72 // false will be returned if the target directory doesn't exist
73 G4bool ChangeDirectory(const char* newDir);
74
75 // find G4UIcommandTree object
76 // null returned if the taregt does not exist
77 G4UIcommandTree* FindDirectory(const char* dirName) const;
78
79 // find G4UIcommand object
80 // null returned if the target does not exist
81 G4UIcommand* FindCommand(const char* commandName) const;
82
83 // command completion
85
87
88 /////////////////////////////////////////////
89 // Methods involving an interactive G4cout //
90 /////////////////////////////////////////////
91 virtual void ExecuteCommand(const G4String&);
92 virtual G4bool GetHelpChoice(G4int&) = 0;
93 virtual void ExitHelp() const = 0;
94 void ApplyShellCommand(const G4String&, G4bool&, G4bool&);
95 void ShowCurrent(const G4String&) const;
97 void ListDirectory(const G4String&) const;
98 void TerminalHelp(const G4String&);
99
100 private:
101 G4String ModifyPath(const G4String& tempPath) const;
102
103 G4String currentDirectory;
104};
105
106#endif
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
G4UIcommand * FindCommand(const char *commandName) const
G4UIsession * SessionStart() override=0
G4String FindMatchingPath(G4UIcommandTree *, const G4String &)
G4String ModifyToFullPathCommand(const char *aCommandLine) const
void PauseSessionStart(const G4String &Prompt) override=0
G4String Complete(const G4String &)
void ShowCurrent(const G4String &) const
void TerminalHelp(const G4String &)
virtual void ExecuteCommand(const G4String &)
void ListDirectory(const G4String &) const
void ApplyShellCommand(const G4String &, G4bool &, G4bool &)
virtual void ExitHelp() const =0
G4String GetCurrentWorkingDirectory() const
~G4VBasicShell() override
G4bool ChangeDirectory(const char *newDir)
void ChangeDirectoryCommand(const G4String &)
G4UIcommandTree * FindDirectory(const char *dirName) const
virtual G4bool GetHelpChoice(G4int &)=0