UnitsConfig.h
Go to the documentation of this file.
1 #ifndef _utl_UnitsConfig_h_
2 #define _utl_UnitsConfig_h_
3 
4 #include <string>
5 
6 
7 namespace utl {
8 
9  class Branch;
10 
11 
22  class UnitsConfig {
23  public:
25  UnitsConfig();
27  void Configure(const utl::Branch& config);
28  // Setters for defaults.
29  void SetAbsorbedDoseDefault(const double unit, const std::string& name);
30  void SetActivityDefault(const double unit, const std::string& name);
31  void SetAmountOfSubstanceDefault(const double unit, const std::string& name);
32  void SetAngleDefault(const double unit, const std::string& name);
33  void SetElectricCapacitanceDefault(const double unit, const std::string& name);
34  void SetElectricChargeDefault(const double unit, const std::string& name);
35  void SetElectricCurrentDefault(const double unit, const std::string& name);
36  void SetElectricPotentialDefault(const double unit, const std::string& name);
37  void SetElectricResistanceDefault(const double unit, const std::string& name);
38  void SetEnergyDefault(const double unit, const std::string& name);
39  void SetForceDefault(const double unit, const std::string& name);
40  void SetFrequencyDefault(const double unit, const std::string& name);
41  void SetIlluminanceDefault(const double unit, const std::string& name);
42  void SetInductanceDefault(const double unit, const std::string& name);
43  void SetLengthDefault(const double unit, const std::string& name);
44  void SetLuminousFluxDefault(const double unit, const std::string& name);
45  void SetLuminousIntensityDefault(const double unit, const std::string& name);
46  void SetMagneticFieldDefault(const double unit, const std::string& name);
47  void SetMagneticFluxDefault(const double unit, const std::string& name);
48  void SetMassDefault(const double unit, const std::string& name);
49  void SetPowerDefault(const double unit, const std::string& name);
50  void SetPressureDefault(const double unit, const std::string& name);
51  void SetTemperatureDefault(const double unit, const std::string& name);
52  void SetTimeDefault(const double unit, const std::string& name);
53 
54  // Setter for current value.
55  void SetAbsorbedDose(const double unit, const std::string& name);
56  void SetActivity(const double unit, const std::string& name);
57  void SetAmountOfSubstance(const double unit, const std::string& name);
58  void SetAngle(const double unit, const std::string& name);
59  void SetElectricCapacitance(const double unit, const std::string& name);
60  void SetElectricCharge(const double unit, const std::string& name);
61  void SetElectricCurrent(const double unit, const std::string& name);
62  void SetElectricPotential(const double unit, const std::string& name);
63  void SetElectricResistance(const double unit, const std::string& name);
64  void SetEnergy(const double unit, const std::string& name);
65  void SetForce(const double unit, const std::string& name);
66  void SetFrequency(const double unit, const std::string& name);
67  void SetIlluminance(const double unit, const std::string& name);
68  void SetInductance(const double unit, const std::string& name);
69  void SetLength(const double unit, const std::string& name);
70  void SetLuminousFlux(const double unit, const std::string& name);
71  void SetLuminousIntensity(const double unit, const std::string& name);
72  void SetMagneticField(const double unit, const std::string& name);
73  void SetMagneticFlux(const double unit, const std::string& name);
74  void SetMass(const double unit, const std::string& name);
75  void SetPower(const double unit, const std::string& name);
76  void SetPressure(const double unit, const std::string& name);
77  void SetTemperature(const double unit, const std::string& name);
78  void SetTime(const double unit, const std::string& name);
79 
80  // Names. XXX It would be nicer to have some common place for the names (instead of being supplied by this class' users).
81  const std::string& GetAbsorbedDoseName() const { return fAbsorbedDose.fName; }
82  const std::string& GetActivityName() const { return fActivity.fName; }
83  const std::string& GetAmountOfSubstanceName() const { return fAmountOfSubstance.fName; }
84  const std::string& GetAngleName() const { return fAngle.fName; }
85  const std::string& GetElectricCapacitanceName() const { return fElectricCapacitance.fName; }
86  const std::string& GetElectricChargeName() const { return fElectricCharge.fName; }
87  const std::string& GetElectricCurrentName() const { return fElectricCurrent.fName; }
88  const std::string& GetElectricPotentialName() const { return fElectricPotential.fName; }
89  const std::string& GetElectricResistanceName() const { return fElectricResistance.fName; }
90  const std::string& GetEnergyName() const { return fEnergy.fName; }
91  const std::string& GetForceName() const { return fForce.fName; }
92  const std::string& GetFrequencyName() const { return fFrequency.fName; }
93  const std::string& GetIlluminanceName() const { return fIlluminance.fName; }
94  const std::string& GetInductanceName() const { return fInductance.fName; }
95  const std::string& GetLengthName() const { return fLength.fName; }
96  const std::string& GetLuminousFluxName() const { return fLuminousFlux.fName; }
97  const std::string& GetLuminousIntensityName() const { return fLuminousIntensity.fName; }
98  const std::string& GetMagneticFieldName() const { return fMagneticField.fName; }
99  const std::string& GetMagneticFluxName() const { return fMagneticFlux.fName; }
100  const std::string& GetMassName() const { return fMass.fName; }
101  const std::string& GetPowerName() const { return fPower.fName; }
102  const std::string& GetPressureName() const { return fPressure.fName; }
103  const std::string& GetTemperatureName() const { return fTemperature.fName; }
104  const std::string& GetTimeName() const { return fTime.fName; }
105 
106  // Unit values.
107  double GetAbsorbedDoseUnit() const { return fAbsorbedDose.fUnit; }
108  double GetActivityUnit() const { return fActivity.fUnit; }
110  double GetAngleUnit() const { return fAngle.fUnit; }
112  double GetElectricChargeUnit() const { return fElectricCharge.fUnit; }
113  double GetElectricCurrentUnit() const { return fElectricCurrent.fUnit; }
116  double GetEnergyUnit() const { return fEnergy.fUnit; }
117  double GetForceUnit() const { return fForce.fUnit; }
118  double GetFrequencyUnit() const { return fFrequency.fUnit; }
119  double GetIlluminanceUnit() const { return fIlluminance.fUnit; }
120  double GetInductanceUnit() const { return fInductance.fUnit; }
121  double GetLengthUnit() const { return fLength.fUnit; }
122  double GetLuminousFluxUnit() const { return fLuminousFlux.fUnit; }
124  double GetMagneticFieldUnit() const { return fMagneticField.fUnit; }
125  double GetMagneticFluxUnit() const { return fMagneticFlux.fUnit; }
126  double GetMassUnit() const { return fMass.fUnit; }
127  double GetPowerUnit() const { return fPower.fUnit; }
128  double GetPressureUnit() const { return fPressure.fUnit; }
129  double GetTemperatureUnit() const { return fTemperature.fUnit; }
130  double GetTimeUnit() const { return fTime.fUnit; }
131 
132  private:
133  struct Entry {
134  double fUnit = 0;
135  std::string fName;
136  double fUnitDefault = 0;
137  std::string fNameDefault;
138  };
139 
141  static void SetDefault(Entry& e, const double unit, const std::string& name);
142 
144  static void SetValue(Entry& e, const double unit, const std::string& name);
145 
146  // Fields for different units, be them base or not.
171  };
172 
173 }
174 
175 
176 #endif
const std::string & GetMassName() const
Definition: UnitsConfig.h:100
void SetPowerDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:197
const std::string & GetAmountOfSubstanceName() const
Definition: UnitsConfig.h:83
double GetMagneticFluxUnit() const
Definition: UnitsConfig.h:125
void SetPower(const double unit, const std::string &name)
Definition: UnitsConfig.cc:366
void SetAmountOfSubstanceDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:71
const std::string & GetElectricResistanceName() const
Definition: UnitsConfig.h:89
double GetInductanceUnit() const
Definition: UnitsConfig.h:120
Entry fElectricCurrent
Definition: UnitsConfig.h:153
double GetLengthUnit() const
Definition: UnitsConfig.h:121
void SetElectricCurrent(const double unit, const std::string &name)
Definition: UnitsConfig.cc:268
void SetPressureDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:204
Helper class for configuration of units: value and name.
Definition: UnitsConfig.h:22
void SetIlluminanceDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:141
double GetElectricChargeUnit() const
Definition: UnitsConfig.h:112
const std::string & GetLengthName() const
Definition: UnitsConfig.h:95
static void SetValue(Entry &e, const double unit, const std::string &name)
Helper for current value.
Definition: UnitsConfig.cc:48
void SetElectricPotential(const double unit, const std::string &name)
Definition: UnitsConfig.cc:275
void SetActivity(const double unit, const std::string &name)
Definition: UnitsConfig.cc:233
void SetEnergyDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:120
double GetLuminousIntensityUnit() const
Definition: UnitsConfig.h:123
double GetAngleUnit() const
Definition: UnitsConfig.h:110
double GetIlluminanceUnit() const
Definition: UnitsConfig.h:119
void SetInductance(const double unit, const std::string &name)
Definition: UnitsConfig.cc:317
double GetTemperatureUnit() const
Definition: UnitsConfig.h:129
const std::string & GetAbsorbedDoseName() const
Definition: UnitsConfig.h:81
void SetMass(const double unit, const std::string &name)
Definition: UnitsConfig.cc:359
double GetAmountOfSubstanceUnit() const
Definition: UnitsConfig.h:109
double GetActivityUnit() const
Definition: UnitsConfig.h:108
double GetLuminousFluxUnit() const
Definition: UnitsConfig.h:122
Entry fAmountOfSubstance
Definition: UnitsConfig.h:149
void SetElectricCurrentDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:99
const std::string & GetLuminousIntensityName() const
Definition: UnitsConfig.h:97
const std::string & GetPowerName() const
Definition: UnitsConfig.h:101
double GetPowerUnit() const
Definition: UnitsConfig.h:127
void SetMassDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:190
const std::string & GetPressureName() const
Definition: UnitsConfig.h:102
void SetEnergy(const double unit, const std::string &name)
Definition: UnitsConfig.cc:289
Class representing a document branch.
Definition: Branch.h:107
void SetLuminousIntensityDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:169
const std::string & GetIlluminanceName() const
Definition: UnitsConfig.h:93
double GetForceUnit() const
Definition: UnitsConfig.h:117
void Configure(const utl::Branch &config)
Configure units (values and defaults) given a branch.
Definition: UnitsConfig.cc:395
const std::string & GetMagneticFluxName() const
Definition: UnitsConfig.h:99
void SetAngleDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:78
void SetLengthDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:155
void SetAbsorbedDose(const double unit, const std::string &name)
Definition: UnitsConfig.cc:226
void SetMagneticFlux(const double unit, const std::string &name)
Definition: UnitsConfig.cc:352
double GetMassUnit() const
Definition: UnitsConfig.h:126
void SetTemperature(const double unit, const std::string &name)
Definition: UnitsConfig.cc:380
double GetElectricCapacitanceUnit() const
Definition: UnitsConfig.h:111
double GetElectricCurrentUnit() const
Definition: UnitsConfig.h:113
Entry fElectricResistance
Definition: UnitsConfig.h:155
void SetFrequencyDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:134
double GetElectricPotentialUnit() const
Definition: UnitsConfig.h:114
double GetPressureUnit() const
Definition: UnitsConfig.h:128
void SetTimeDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:218
double GetMagneticFieldUnit() const
Definition: UnitsConfig.h:124
void SetAmountOfSubstance(const double unit, const std::string &name)
Definition: UnitsConfig.cc:240
void SetActivityDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:64
const std::string & GetForceName() const
Definition: UnitsConfig.h:91
void SetAbsorbedDoseDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:57
void SetTemperatureDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:211
const std::string & GetEnergyName() const
Definition: UnitsConfig.h:90
void SetPressure(const double unit, const std::string &name)
Definition: UnitsConfig.cc:373
const std::string & GetInductanceName() const
Definition: UnitsConfig.h:94
const double unit[npar]
Definition: UnivRec.h:76
const std::string & GetElectricCurrentName() const
Definition: UnitsConfig.h:87
const std::string & GetLuminousFluxName() const
Definition: UnitsConfig.h:96
void SetIlluminance(const double unit, const std::string &name)
Definition: UnitsConfig.cc:310
void SetMagneticFluxDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:183
double GetEnergyUnit() const
Definition: UnitsConfig.h:116
void SetTime(const double unit, const std::string &name)
Definition: UnitsConfig.cc:387
UnitsConfig()
Create loading Auger default units as self-defaults.
Definition: UnitsConfig.cc:9
void SetElectricCapacitanceDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:85
void SetForce(const double unit, const std::string &name)
Definition: UnitsConfig.cc:296
const std::string & GetActivityName() const
Definition: UnitsConfig.h:82
double GetElectricResistanceUnit() const
Definition: UnitsConfig.h:115
const std::string & GetTemperatureName() const
Definition: UnitsConfig.h:103
void SetElectricPotentialDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:106
void SetLuminousFluxDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:162
void SetInductanceDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:148
void SetElectricCharge(const double unit, const std::string &name)
Definition: UnitsConfig.cc:261
const std::string & GetElectricChargeName() const
Definition: UnitsConfig.h:86
const std::string & GetTimeName() const
Definition: UnitsConfig.h:104
void SetLength(const double unit, const std::string &name)
Definition: UnitsConfig.cc:324
std::string fNameDefault
Definition: UnitsConfig.h:137
void SetLuminousFlux(const double unit, const std::string &name)
Definition: UnitsConfig.cc:331
void SetFrequency(const double unit, const std::string &name)
Definition: UnitsConfig.cc:303
double GetAbsorbedDoseUnit() const
Definition: UnitsConfig.h:107
Entry fElectricCapacitance
Definition: UnitsConfig.h:151
const std::string & GetFrequencyName() const
Definition: UnitsConfig.h:92
const std::string & GetElectricCapacitanceName() const
Definition: UnitsConfig.h:85
const std::string & GetElectricPotentialName() const
Definition: UnitsConfig.h:88
double GetTimeUnit() const
Definition: UnitsConfig.h:130
Entry fElectricPotential
Definition: UnitsConfig.h:154
double GetFrequencyUnit() const
Definition: UnitsConfig.h:118
const std::string & GetAngleName() const
Definition: UnitsConfig.h:84
void SetAngle(const double unit, const std::string &name)
Definition: UnitsConfig.cc:247
void SetLuminousIntensity(const double unit, const std::string &name)
Definition: UnitsConfig.cc:338
void SetForceDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:127
void SetMagneticFieldDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:176
void SetElectricResistance(const double unit, const std::string &name)
Definition: UnitsConfig.cc:282
Entry fLuminousIntensity
Definition: UnitsConfig.h:163
void SetElectricChargeDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:92
void SetElectricResistanceDefault(const double unit, const std::string &name)
Definition: UnitsConfig.cc:113
void SetElectricCapacitance(const double unit, const std::string &name)
Definition: UnitsConfig.cc:254
static void SetDefault(Entry &e, const double unit, const std::string &name)
Helper. Define it as member so as to have access to the type.
Definition: UnitsConfig.cc:40
const std::string & GetMagneticFieldName() const
Definition: UnitsConfig.h:98
void SetMagneticField(const double unit, const std::string &name)
Definition: UnitsConfig.cc:345

, generated on Tue Sep 26 2023.