Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4GenericMessenger::Command Struct Reference

#include <G4GenericMessenger.hh>

Inheritance diagram for G4GenericMessenger::Command:
Collaboration diagram for G4GenericMessenger::Command:

Public Types

enum  UnitSpec { UnitCategory, UnitDefault }
 

Public Member Functions

 Command (G4UIcommand *cmd, const std::type_info &ti)
 
 Command ()
 
CommandSetStates (G4ApplicationState s0)
 
CommandSetStates (G4ApplicationState s0, G4ApplicationState s1)
 
CommandSetStates (G4ApplicationState s0, G4ApplicationState s1, G4ApplicationState s2)
 
CommandSetStates (G4ApplicationState s0, G4ApplicationState s1, G4ApplicationState s2, G4ApplicationState s3)
 
CommandSetStates (G4ApplicationState s0, G4ApplicationState s1, G4ApplicationState s2, G4ApplicationState s3, G4ApplicationState s4)
 
CommandSetRange (const G4String &range)
 
CommandSetGuidance (const G4String &s0)
 
CommandSetUnit (const G4String &, UnitSpec=UnitDefault)
 
CommandSetUnitCategory (const G4String &u)
 
CommandSetDefaultUnit (const G4String &u)
 
CommandSetParameterName (const G4String &, G4bool, G4bool=false)
 
CommandSetDefaultValue (const G4String &)
 
CommandSetCandidates (const G4String &)
 
CommandSetToBeBroadcasted (G4bool s0)
 
CommandSetToBeFlushed (G4bool s0)
 
CommandSetWorkerThreadOnly (G4bool s0)
 

Public Attributes

G4UIcommandcommand
 
const std::type_info * type
 

Detailed Description

Definition at line 59 of file G4GenericMessenger.hh.

Member Enumeration Documentation

Constructor & Destructor Documentation

G4GenericMessenger::Command::Command ( G4UIcommand cmd,
const std::type_info &  ti 
)
inline

Definition at line 61 of file G4GenericMessenger.hh.

61 : command(cmd), type(&ti) {}
const std::type_info * type
G4GenericMessenger::Command::Command ( )
inline

Definition at line 62 of file G4GenericMessenger.hh.

62 : command(0), type(0) {}
const std::type_info * type

Member Function Documentation

G4GenericMessenger::Command & G4GenericMessenger::Command::SetCandidates ( const G4String candList)

Definition at line 247 of file G4GenericMessenger.cc.

247  {
248  G4UIparameter * theParam = command->GetParameter(0);
249  theParam->SetParameterCandidates(candList);
250  return *this;
251 }
void SetParameterCandidates(const char *theString)
G4UIparameter * GetParameter(G4int i) const
Definition: G4UIcommand.hh:145

Here is the call graph for this function:

Here is the caller graph for this function:

Command& G4GenericMessenger::Command::SetDefaultUnit ( const G4String u)
inline

Definition at line 73 of file G4GenericMessenger.hh.

73 {return SetUnit(u, UnitDefault);}
Command & SetUnit(const G4String &, UnitSpec=UnitDefault)

Here is the call graph for this function:

G4GenericMessenger::Command & G4GenericMessenger::Command::SetDefaultValue ( const G4String defVal)

Definition at line 253 of file G4GenericMessenger.cc.

253  {
254  G4UIparameter * theParam = command->GetParameter(0);
255  theParam->SetDefaultValue(defVal);
256  return *this;
257 }
void SetDefaultValue(const char *theDefaultValue)
G4UIparameter * GetParameter(G4int i) const
Definition: G4UIcommand.hh:145

Here is the call graph for this function:

Here is the caller graph for this function:

Command& G4GenericMessenger::Command::SetGuidance ( const G4String s0)
inline

Definition at line 70 of file G4GenericMessenger.hh.

70 { command->SetGuidance(s0); return *this; }
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:161

Here is the call graph for this function:

G4GenericMessenger::Command & G4GenericMessenger::Command::SetParameterName ( const G4String name,
G4bool  omittable,
G4bool  currentAsDefault = false 
)

Definition at line 239 of file G4GenericMessenger.cc.

239  {
240  G4UIparameter* theParam = command->GetParameter(0);
241  theParam->SetParameterName(name);
242  theParam->SetOmittable(omittable);
243  theParam->SetCurrentAsDefault(currentAsDefault);
244  return *this;
245 }
void SetOmittable(G4bool om)
void SetParameterName(const char *theName)
void SetCurrentAsDefault(G4bool val)
G4UIparameter * GetParameter(G4int i) const
Definition: G4UIcommand.hh:145

Here is the call graph for this function:

Here is the caller graph for this function:

Command& G4GenericMessenger::Command::SetRange ( const G4String range)
inline

Definition at line 69 of file G4GenericMessenger.hh.

69 {command->SetRange(range.c_str()); return *this;}
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetStates ( G4ApplicationState  s0)
inline

Definition at line 64 of file G4GenericMessenger.hh.

64 {command->AvailableForStates(s0); return *this;}
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:240

Here is the call graph for this function:

Here is the caller graph for this function:

Command& G4GenericMessenger::Command::SetStates ( G4ApplicationState  s0,
G4ApplicationState  s1 
)
inline

Definition at line 65 of file G4GenericMessenger.hh.

65 {command->AvailableForStates(s0, s1); return *this;}
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:240

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetStates ( G4ApplicationState  s0,
G4ApplicationState  s1,
G4ApplicationState  s2 
)
inline

Definition at line 66 of file G4GenericMessenger.hh.

66 {command->AvailableForStates(s0,s1,s2); return *this;}
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:240

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetStates ( G4ApplicationState  s0,
G4ApplicationState  s1,
G4ApplicationState  s2,
G4ApplicationState  s3 
)
inline

Definition at line 67 of file G4GenericMessenger.hh.

67 {command->AvailableForStates(s0,s1,s2,s3); return *this;}
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:240

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetStates ( G4ApplicationState  s0,
G4ApplicationState  s1,
G4ApplicationState  s2,
G4ApplicationState  s3,
G4ApplicationState  s4 
)
inline

Definition at line 68 of file G4GenericMessenger.hh.

68 {command->AvailableForStates(s0,s1,s2,s3,s4); return *this;}
void AvailableForStates(G4ApplicationState s1)
Definition: G4UIcommand.cc:240

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetToBeBroadcasted ( G4bool  s0)
inline

Definition at line 77 of file G4GenericMessenger.hh.

77 { command->SetToBeBroadcasted(s0); return *this; }
void SetToBeBroadcasted(G4bool val)
Definition: G4UIcommand.hh:184

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetToBeFlushed ( G4bool  s0)
inline

Definition at line 78 of file G4GenericMessenger.hh.

78 { command->SetToBeFlushed(s0); return *this; }
void SetToBeFlushed(G4bool val)
Definition: G4UIcommand.hh:188

Here is the call graph for this function:

G4GenericMessenger::Command & G4GenericMessenger::Command::SetUnit ( const G4String unit,
UnitSpec  spec = UnitDefault 
)

Definition at line 186 of file G4GenericMessenger.cc.

186  {
187  // Change the type of command (unfortunatelly this is done a posteriory)
188  // We need to delete the old command before creating the new one and therefore we need to recover the information
189  // before the deletetion
191  G4String cmdpath = command->GetCommandPath();
193  ed<<"G4GenericMessenger::Command::SetUnit() is thread-unsafe and should not be used\n"
194  <<"in multi-threaded mode. For your command <"<<cmdpath<<">, use\n"
195  <<" DeclarePropertyWithUnit(const G4String& name, const G4String& defaultUnit,\n"
196  <<" const G4AnyType& variable, const G4String& doc)\n"
197  <<"or\n"
198  <<" DeclareMethodWithUnit(const G4String& name, const G4String& defaultUnit,\n"
199  <<" const G4AnyType& variable, const G4String& doc)\n"
200  <<"to define a command with a unit <"<<unit<<">.";
201  if(spec!=UnitDefault) { ed<<"\nPlease use a default unit instead of unit category."; }
202  G4Exception("G4GenericMessenger::Command::SetUnit()","Intercom70001",FatalException,ed);
203  return *this;
204  }
205 
206  G4String cmdpath = command->GetCommandPath();
207  G4UImessenger* messenger = command->GetMessenger();
209  std::vector<G4String> guidance;
210  G4String par_name = command->GetParameter(0)->GetParameterName();
211  bool par_omitable = command->GetParameter(0)->IsOmittable();
212  for (G4int i = 0; i < command->GetGuidanceEntries(); i++) guidance.push_back(command->GetGuidanceLine(i));
213  // Before deleting the command we need to add a fake one to avoid deleting the directory entry and with its guidance
214  G4UIcommand tmp((cmdpath+"_tmp").c_str(), messenger);
215  delete command;
216 
217  if (*type == typeid(float) || *type == typeid(double) ) {
218  G4UIcmdWithADoubleAndUnit* cmd_t = new G4UIcmdWithADoubleAndUnit(cmdpath, messenger);
219  if(spec == UnitDefault) cmd_t->SetDefaultUnit(unit);
220  else if(spec == UnitCategory) cmd_t->SetUnitCategory(unit);
221  cmd_t->SetParameterName(par_name, par_omitable);
222  command = cmd_t;
223  }
224  else if (*type == typeid(G4ThreeVector)) {
225  G4UIcmdWith3VectorAndUnit* cmd_t = new G4UIcmdWith3VectorAndUnit(cmdpath, messenger);
226  if(spec == UnitDefault) cmd_t->SetDefaultUnit(unit);
227  else if(spec == UnitCategory) cmd_t->SetUnitCategory(unit);
228  command = cmd_t;
229  }
230  else {
231  G4cerr << "Only parameters of type <double> or <float> can be associated with units" << G4endl;
232  return *this;
233  }
234  for (size_t i = 0; i < guidance.size(); i++) command->SetGuidance(guidance[i]);
235  command->SetRange(range);
236  return *this;
237 }
const G4String & GetRange() const
Definition: G4UIcommand.hh:133
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
const std::type_info * type
G4String GetParameterName() const
void SetDefaultUnit(const char *defUnit)
void SetUnitCategory(const char *unitCategory)
void SetUnitCategory(const char *unitCategory)
int G4int
Definition: G4Types.hh:78
const G4String & GetGuidanceLine(G4int i) const
Definition: G4UIcommand.hh:137
G4bool IsOmittable() const
const G4ParticleDefinition const G4Material *G4double range
void SetRange(const char *rs)
Definition: G4UIcommand.hh:125
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:161
G4UIparameter * GetParameter(G4int i) const
Definition: G4UIcommand.hh:145
const G4String & GetCommandPath() const
Definition: G4UIcommand.hh:139
G4bool IsMultithreadedApplication()
Definition: G4Threading.cc:152
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void SetDefaultUnit(const char *defUnit)
G4UImessenger * GetMessenger() const
Definition: G4UIcommand.hh:149
#define G4endl
Definition: G4ios.hh:61
G4int GetGuidanceEntries() const
Definition: G4UIcommand.hh:135
void SetParameterName(const char *theName, G4bool omittable, G4bool currentAsDefault=false)
G4GLOB_DLL std::ostream G4cerr

Here is the call graph for this function:

Here is the caller graph for this function:

Command& G4GenericMessenger::Command::SetUnitCategory ( const G4String u)
inline

Definition at line 72 of file G4GenericMessenger.hh.

72 {return SetUnit(u, UnitCategory);}
Command & SetUnit(const G4String &, UnitSpec=UnitDefault)

Here is the call graph for this function:

Command& G4GenericMessenger::Command::SetWorkerThreadOnly ( G4bool  s0)
inline

Definition at line 79 of file G4GenericMessenger.hh.

79 { command->SetWorkerThreadOnly(s0); return *this; }
void SetWorkerThreadOnly(G4bool val=true)
Definition: G4UIcommand.hh:192

Here is the call graph for this function:

Member Data Documentation

G4UIcommand* G4GenericMessenger::Command::command

Definition at line 81 of file G4GenericMessenger.hh.

const std::type_info* G4GenericMessenger::Command::type

Definition at line 82 of file G4GenericMessenger.hh.


The documentation for this struct was generated from the following files: