Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/intercoms/include/G4UIparameter.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 ]

  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 // G4UIparameter
 27 //
 28 // Class description:
 29 //
 30 // This class represents a parameter which will be taken by a G4UIcommand
 31 // object. In case a command is defined by constructing G4UIcmdXXX class,
 32 // it automatically creates necessary parameter objects, thus the user needs
 33 // not to create parameter object(s). In case the user wants to create a
 34 // command directly instantiated by G4UIcommand class, he/she must create
 35 // a parameter object(s)
 36 
 37 // Author: Makoto Asai, 1997
 38 // --------------------------------------------------------------------
 39 #ifndef G4UIparameter_hh
 40 #define G4UIparameter_hh 1
 41 
 42 #include "globals.hh"
 43 
 44 class G4UIparameter
 45 {
 46   public:
 47     // Default constructor
 48     G4UIparameter() = default;
 49 
 50     // Constructors, where "theName" is the name of the parameter which will
 51     // be used by the range checking, "theType" is the type of the parameter
 52     // (currently "b" (Boolean), "i" (integer), "l" (long int), "d" (double)
 53     // and "s" (string) are supported).
 54     // "theOmittable" is a Boolean flag to set whether
 55     // the user of the command can omit the parameter or not.
 56     // If "theOmittable" is true, the default value must be given
 57     G4UIparameter(char theType);
 58     G4UIparameter(const char* theName, char theType, G4bool theOmittable);
 59 
 60     // Destructor. When a command is destructed, the delete operator(s) of the
 61     // associated parameter(s) are AUTOMATICALLY invoked
 62     ~G4UIparameter();
 63 
 64     G4int CheckNewValue(const char* newValue);
 65     void List();
 66 
 67     // These methods set the default value of the parameter
 68     inline void SetDefaultValue(const char* theDefaultValue) { defaultValue = theDefaultValue; }
 69     void SetDefaultValue(G4int theDefaultValue);
 70     void SetDefaultValue(G4long theDefaultValue);
 71     void SetDefaultValue(G4double theDefaultValue);
 72 
 73     // This method can be used for a string-type parameter that is
 74     // used to specify a unit. This method is valid only for a
 75     // string-type parameter
 76     void SetDefaultUnit(const char* theDefaultUnit);
 77 
 78     inline const G4String& GetDefaultValue() const { return defaultValue; }
 79     inline char GetParameterType() const { return parameterType; }
 80 
 81     // Defines the range the parameter can take.
 82     // The variable name appearing in the range expression must be the
 83     // same as the name of the parameter.
 84     // All the C++ syntax of relational operators are allowed for the
 85     // range expression
 86     inline void SetParameterRange(const char* theRange) { rangeExpression = theRange; }
 87 
 88     inline const G4String& GetParameterRange() const { return rangeExpression; }
 89 
 90     inline void SetParameterName(const char* pName) { parameterName = pName; }
 91     inline const G4String& GetParameterName() const { return parameterName; }
 92 
 93     // This method is meaningful if the type of the parameter is string.
 94     // The candidates listed in the argument must be separated by space(s)
 95     inline void SetParameterCandidates(const char* theString) { parameterCandidate = theString; }
 96 
 97     inline const G4String& GetParameterCandidates() const { return parameterCandidate; }
 98 
 99     inline void SetOmittable(G4bool om) { omittable = om; }
100     inline G4bool IsOmittable() const { return omittable; }
101 
102     inline void SetCurrentAsDefault(G4bool val) { currentAsDefaultFlag = val; }
103     inline G4bool GetCurrentAsDefault() const { return currentAsDefaultFlag; }
104 
105     // Obsolete methods
106     //
107     inline const G4String& GetParameterGuidance() const { return parameterGuidance; }
108     inline void SetGuidance(const char* theGuidance) { parameterGuidance = theGuidance; }
109 
110   private:
111     G4bool TypeCheck(const char* newValue);
112     G4bool CandidateCheck(const char* newValue);
113 
114   private:
115     G4String parameterName;
116     G4String parameterGuidance;
117     G4String defaultValue;
118     G4String rangeExpression;
119     G4String parameterCandidate;
120     char parameterType = '\0';
121     G4bool omittable = false;
122     G4bool currentAsDefaultFlag = false;
123 };
124 
125 #endif
126