Geant4-11
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4UIparameter.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// 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#include "G4UItokenNum.hh"
44
46{
47 public:
48
50 G4UIparameter(char theType);
51 G4UIparameter(const char* theName, char theType, G4bool theOmittable);
52 // Constructors, where "theName" is the name of the parameter which will
53 // be used by the range checking, "theType" is the type of the parameter
54 // (currently "b" (Boolean), "i" (integer), "l" (long int), "d" (double)
55 // and "s" (string) are supported).
56 // "theOmittable" is a Boolean flag to set whether
57 // the user of the command can omit the parameter or not.
58 // If "theOmittable" is true, the default value must be given
59
61 // Destructor. When a command is destructed, the delete operator(s) of the
62 // associated parameter(s) are AUTOMATICALLY invoked
63
64 G4bool operator==(const G4UIparameter& right) const;
65 G4bool operator!=(const G4UIparameter& right) const;
66
67 G4int CheckNewValue(const char* newValue);
68 void List();
69
70 inline void SetDefaultValue(const char* theDefaultValue)
71 {
72 defaultValue = theDefaultValue;
73 }
74 void SetDefaultValue(G4int theDefaultValue);
75 void SetDefaultValue(G4long theDefaultValue);
76 void SetDefaultValue(G4double theDefaultValue);
77 // These methods set the default value of the parameter
78
79 void SetDefaultUnit(const char* theDefaultUnit);
80 // This method can be used for a string-type parameter that is
81 // used to specify a unit. This method is valid only for a
82 // string-type parameter
83
84 inline const G4String& GetDefaultValue() const { return defaultValue; }
85 inline char GetParameterType() const { return parameterType; }
86
87 inline void SetParameterRange(const char* theRange)
88 // Defines the range the parameter can take.
89 // The variable name appearing in the range expression must be the
90 // same as the name of the parameter.
91 // All the C++ syntax of relational operators are allowed for the
92 // range expression
93 {
94 parameterRange = theRange;
95 }
96
97 inline const G4String& GetParameterRange() const { return parameterRange; }
98
99 inline void SetParameterName(const char* pName) { parameterName = pName; }
100 inline const G4String& GetParameterName() const { return parameterName; }
101
102 inline void SetParameterCandidates(const char* theString)
103 // This method is meaningful if the type of the parameter is string.
104 // The candidates listed in the argument must be separated by space(s)
105 {
106 parameterCandidate = theString;
107 }
108
109 inline const G4String& GetParameterCandidates() const
110 {
111 return parameterCandidate;
112 }
113
114 inline void SetOmittable(G4bool om) { omittable = om; }
115 inline G4bool IsOmittable() const { return omittable; }
116
119
120 // Obsolete methods
121 //
122 inline void SetWidget(G4int theWidget) { widget = theWidget; }
123 inline const G4String& GetParameterGuidance() const
124 {
125 return parameterGuidance;
126 }
127 inline void SetGuidance(const char* theGuidance)
128 {
129 parameterGuidance = theGuidance;
130 }
131
132 protected:
133
136
137 private:
138
139 // --- the following is used by CheckNewValue() -------
140 G4int TypeCheck(const char* newValue);
141 G4int RangeCheck(const char* newValue);
142 G4int CandidateCheck(const char* newValue);
143 G4int IsInt(const char* str, short maxDigit); // used for both int and long int
144 G4int IsDouble(const char* str);
145 G4int ExpectExponent(const char* str);
146 // syntax nodes
147 yystype Expression(void);
156 // semantics routines
157 G4int Eval2(yystype arg1, G4int op, yystype arg2);
158 G4int CompareInt(G4int arg1, G4int op, G4int arg2);
159 G4int CompareLong(G4long arg1, G4int op, G4long arg2);
160 G4int CompareDouble(double arg1, G4int op, double arg2);
161 // utility
162 tokenNum Yylex(void); // returns next token
163 G4int G4UIpGetc(void); // read one char from rangeBuf
164 G4int G4UIpUngetc(G4int c); // put back
166 G4int Follow(G4int expect, G4int ifyes, G4int ifno);
167 //G4String TokenToStr(G4int token);
168
169 // data -----------------------------------------------------------
170
176 char parameterType = '\0';
180
181 //------------ CheckNewValue() related data members ---------------
183 G4int bp = 0; // buffer pointer for rangeBuf
188};
189
190#endif
double G4double
Definition: G4Types.hh:83
long G4long
Definition: G4Types.hh:87
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4String & GetParameterCandidates() const
void SetDefaultValue(const char *theDefaultValue)
G4int CheckNewValue(const char *newValue)
G4String defaultValue
void SetParameterName(const char *pName)
yystype PrimaryExpression(void)
const G4String & GetParameterGuidance() const
G4int CompareInt(G4int arg1, G4int op, G4int arg2)
yystype AdditiveExpression(void)
G4int CandidateCheck(const char *newValue)
G4String parameterRange
G4bool IsOmittable() const
G4int TypeCheck(const char *newValue)
void SetOmittable(G4bool om)
G4int RangeCheck(const char *newValue)
G4int CompareDouble(double arg1, G4int op, double arg2)
const G4String & GetParameterRange() const
G4bool currentAsDefaultFlag
void SetGuidance(const char *theGuidance)
G4int Follow(G4int expect, G4int ifyes, G4int ifno)
yystype MultiplicativeExpression(void)
G4String parameterGuidance
G4int ExpectExponent(const char *str)
G4String parameterCandidate
void SetParameterRange(const char *theRange)
G4int Backslash(G4int c)
G4bool GetCurrentAsDefault() const
G4int CompareLong(G4long arg1, G4int op, G4long arg2)
yystype RelationalExpression(void)
yystype EqualityExpression(void)
yystype Expression(void)
tokenNum Yylex(void)
G4int Eval2(yystype arg1, G4int op, yystype arg2)
void SetWidget(G4int theWidget)
G4int G4UIpGetc(void)
void SetParameterCandidates(const char *theString)
G4String rangeBuf
yystype LogicalANDExpression(void)
char GetParameterType() const
G4bool operator!=(const G4UIparameter &right) const
G4String parameterName
void SetCurrentAsDefault(G4bool val)
const G4String & GetParameterName() const
G4int IsInt(const char *str, short maxDigit)
const G4String & GetDefaultValue() const
yystype LogicalORExpression(void)
G4bool operator==(const G4UIparameter &right) const
G4int G4UIpUngetc(G4int c)
G4int IsDouble(const char *str)
yystype UnaryExpression(void)
void SetDefaultUnit(const char *theDefaultUnit)
struct G4UItokenNum::yystype yystype