Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/intercoms/include/G4UIcommand.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /intercoms/include/G4UIcommand.hh (Version 11.3.0) and /intercoms/include/G4UIcommand.hh (Version ReleaseNotes)


** Warning: Cannot open xref database.

  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4UIcommand                                    
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 // This G4UIcommand is the "concrete" base cla    
 31 // used by Geant4 (G)UI. The user can use this    
 32 // arguments of a command are not suitable wit    
 33 // classes.                                       
 34 // Some methods defined in this base class are    
 35                                                   
 36 // Author: Makoto Asai (SLAC), 1998               
 37 // -------------------------------------------    
 38 #ifndef G4UIcommand_hh                            
 39 #define G4UIcommand_hh 1                          
 40                                                   
 41 #include "G4ApplicationState.hh"                  
 42 #include "G4ThreeVector.hh"                       
 43 #include "G4UIparameter.hh"                       
 44 #include "globals.hh"                             
 45                                                   
 46 #include <vector>                                 
 47                                                   
 48 class G4UImessenger;                              
 49                                                   
 50 class G4UIcommand                                 
 51 {                                                 
 52   public:                                         
 53     // Dummy default constructor                  
 54     G4UIcommand() = default;                      
 55                                                   
 56     // Constructor. The command string with fu    
 57     // and the pointer to the messenger must b    
 58     // If tBB is set to false, this command wo    
 59     // This tBB parameter could be changed wit    
 60     // except for G4UIdirectory                   
 61     G4UIcommand(const char* theCommandPath, G4    
 62                                                   
 63     virtual ~G4UIcommand();                       
 64                                                   
 65     G4bool operator==(const G4UIcommand& right    
 66     G4bool operator!=(const G4UIcommand& right    
 67                                                   
 68     virtual G4int DoIt(const G4String& paramet    
 69                                                   
 70     G4String GetCurrentValue();                   
 71                                                   
 72     // These methods define the states where t    
 73     // Once one of these commands is invoked,     
 74     // be denied when Geant4 is NOT in the ass    
 75     void AvailableForStates(G4ApplicationState    
 76     void AvailableForStates(G4ApplicationState    
 77     void AvailableForStates(G4ApplicationState    
 78     void AvailableForStates(G4ApplicationState    
 79                             G4ApplicationState    
 80     void AvailableForStates(G4ApplicationState    
 81                             G4ApplicationState    
 82                                                   
 83     G4bool IsAvailable();                         
 84                                                   
 85     virtual void List();                          
 86                                                   
 87     // Static methods for conversion from valu    
 88     // These methods are to be used by GetCurr    
 89     // of concrete messengers                     
 90     static G4String ConvertToString(G4bool boo    
 91     static G4String ConvertToString(G4int intV    
 92     static G4String ConvertToString(G4long lon    
 93     static G4String ConvertToString(G4double d    
 94     static G4String ConvertToString(G4double d    
 95     static G4String ConvertToString(const G4Th    
 96     static G4String ConvertToString(const G4Th    
 97                                                   
 98     // Static methods for conversion from a st    
 99     // type. These methods are to be used dire    
100     // of concrete messengers, or GetNewXXXVal    
101     // this G4UIcommand class                     
102     static G4bool ConvertToBool(const char* st    
103     static G4int ConvertToInt(const char* st);    
104     static G4long ConvertToLongInt(const char*    
105     static G4double ConvertToDouble(const char    
106     static G4double ConvertToDimensionedDouble    
107     static G4ThreeVector ConvertTo3Vector(cons    
108     static G4ThreeVector ConvertToDimensioned3    
109                                                   
110     // Static methods for unit and its categor    
111     static G4double ValueOf(const char* unitNa    
112     static G4String CategoryOf(const char* uni    
113     static G4String UnitsList(const char* unit    
114                                                   
115     // Defines the range the command parameter    
116     // The variable name(s) appear in the rang    
117     // as the name(s) of the parameter(s).        
118     // All the C++ syntax of relational operat    
119     // range expression                           
120     inline void SetRange(const char* rs) { ran    
121                                                   
122     inline const G4String& GetRange() const {     
123     inline std::size_t GetGuidanceEntries() co    
124     inline const G4String& GetGuidanceLine(G4i    
125     inline const G4String& GetCommandPath() co    
126     inline const G4String& GetCommandName() co    
127     inline std::size_t GetParameterEntries() c    
128     inline G4UIparameter* GetParameter(G4int i    
129     inline std::vector<G4ApplicationState>* Ge    
130     inline G4UImessenger* GetMessenger() const    
131                                                   
132     // Defines a parameter. This method is use    
133     // classes but the user can directly use t    
134     // a command, without using the derived cl    
135     // of the parameters is the order of invok    
136     inline void SetParameter(G4UIparameter* co    
137     {                                             
138       parameter.push_back(newParameter);          
139     }                                             
140                                                   
141     // Adds a guidance line. Unlimited times o    
142     // allowed. The given lines of guidance wi    
143     // The first line of the guidance will be     
144     // command, i.e. one line list of the comm    
145     inline void SetGuidance(const char* aGuida    
146                                                   
147     inline const G4String GetTitle() const        
148     {                                             
149       return (commandGuidance.empty()) ? G4Str    
150     }                                             
151                                                   
152     inline void SetToBeBroadcasted(G4bool val)    
153     inline G4bool ToBeBroadcasted() const { re    
154     inline void SetToBeFlushed(G4bool val) { t    
155     inline G4bool ToBeFlushed() const { return    
156     inline void SetWorkerThreadOnly(G4bool val    
157     inline G4bool IsWorkerThreadOnly() const {    
158                                                   
159     inline void CommandFailed(G4int errCode, G    
160     {                                             
161       commandFailureCode = errCode;               
162       failureDescription = ed.str();              
163     }                                             
164     inline void CommandFailed(G4ExceptionDescr    
165     {                                             
166       commandFailureCode = 1;                     
167       failureDescription = ed.str();              
168     }                                             
169     inline G4int IfCommandFailed() { return co    
170     inline const G4String& GetFailureDescripti    
171     inline void ResetFailure()                    
172     {                                             
173       commandFailureCode = 0;                     
174       failureDescription = "";                    
175     }                                             
176                                                   
177   public:                                         
178     enum CommandType                              
179     {                                             
180       BaseClassCmd,                               
181       WithoutParameterCmd,                        
182       WithABoolCmd,                               
183       WithAnIntegerCmd,                           
184       WithALongIntCmd,                            
185       WithADoubleCmd,                             
186       WithADoubleAndUnitCmd,                      
187       With3VectorCmd,                             
188       With3VectorAndUnitCmd,                      
189       WithAStringCmd,                             
190       CmdDirectory = -1                           
191     };                                            
192                                                   
193     inline CommandType GetCommandType() const     
194     void SetCommandType(CommandType);             
195                                                   
196     inline void SetDefaultSortFlag(G4bool val)    
197                                                   
198   protected:                                      
199     G4int CheckNewValue(const char* newValue);    
200                                                   
201     G4bool toBeBroadcasted = false;               
202     G4bool toBeFlushed = false;                   
203     G4bool workerThreadOnly = false;              
204                                                   
205     G4int commandFailureCode = 0;                 
206     G4String failureDescription = "";             
207                                                   
208     G4bool ifSort = false;                        
209                                                   
210   private:                                        
211     void G4UIcommandCommonConstructorCode(cons    
212                                                   
213   private:                                        
214     CommandType commandType = BaseClassCmd;       
215     G4UImessenger* messenger = nullptr;           
216     G4String commandPath;                         
217     G4String commandName;                         
218     G4String rangeExpression;                     
219     std::vector<G4UIparameter*> parameter;        
220     std::vector<G4String> commandGuidance;        
221     std::vector<G4ApplicationState> availabelS    
222 };                                                
223                                                   
224 #endif                                            
225