BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
Improve type-safety of native enum data type in C++. More...
#include <BDSTypeSafeEnum.hh>
Public Member Functions | |
BDSTypeSafeEnum (type v) | |
type | underlying () const |
return underlying value (can be used in switch statement) | |
std::string | ToString () const |
Static Protected Attributes | |
static std::map< BDSTypeSafeEnum< def, inner >, std::string > * | dictionary |
Private Types | |
typedef inner | type |
Private Attributes | |
inner | val |
Friends | |
std::ostream & | operator<< (std::ostream &out, const BDSTypeSafeEnum &a) |
bool | operator== (const BDSTypeSafeEnum &lhs, const BDSTypeSafeEnum &rhs) |
operators for ordering | |
bool | operator!= (const BDSTypeSafeEnum &lhs, const BDSTypeSafeEnum &rhs) |
operators for ordering | |
bool | operator< (const BDSTypeSafeEnum &lhs, const BDSTypeSafeEnum &rhs) |
operators for ordering | |
bool | operator<= (const BDSTypeSafeEnum &lhs, const BDSTypeSafeEnum &rhs) |
operators for ordering | |
bool | operator> (const BDSTypeSafeEnum &lhs, const BDSTypeSafeEnum &rhs) |
operators for ordering | |
bool | operator>= (const BDSTypeSafeEnum &lhs, const BDSTypeSafeEnum &rhs) |
operators for ordering | |
Improve type-safety of native enum data type in C++.
more info at https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Type_Safe_Enum
the class includes a dictionary map that returns a customisable std::string
Example: struct color_def { enum type { red, green, blue }; }; typedef BDSTypeSafeEnum<color_def,int> color; color c = color::red;
Definition at line 46 of file BDSTypeSafeEnum.hh.
|
private |
Definition at line 48 of file BDSTypeSafeEnum.hh.
|
inline |
Definition at line 59 of file BDSTypeSafeEnum.hh.
|
inline |
Definition at line 60 of file BDSTypeSafeEnum.hh.
|
inline |
Definition at line 64 of file BDSTypeSafeEnum.hh.
|
inline |
return underlying value (can be used in switch statement)
Definition at line 62 of file BDSTypeSafeEnum.hh.
Referenced by BDSParallelWorldSampler::AdjustTransform(), BDSArray4DCoords::BuildDimensionIndex(), BDSParallelWorldSampler::BuildSampler(), BDSBeamPipeInfo::CheckApertureInfo(), BDSApertureInfo::CheckApertureInfo(), BDSBLMFactory::CreateBLM(), BDSCrystalFactory::CreateCrystal(), BDSFieldFactory::CreateField(), BDSFieldFactory::CreateFieldEM(), BDSFieldFactory::CreateFieldERaw(), BDSFieldFactory::CreateFieldIrregular(), BDSFieldFactory::CreateFieldMagRaw(), BDSFieldFactory::CreateIntegratorEM(), BDSFieldFactory::CreateIntegratorMag(), BDSFieldLoader::CreateInterpolator1D(), BDSFieldLoader::CreateInterpolator2D(), BDSFieldLoader::CreateInterpolator3D(), BDSFieldLoader::CreateInterpolator4D(), BDSMagnetOuterFactory::CreateMagnetOuter(), BDSFieldFactory::CreateModulator(), BDSOutputFactory::CreateOutput(), BDS::DetermineFieldClassType(), BDSMagnet::DetermineScalingKey(), BDSArray4DCoords::DimensionIndex(), BDSApertureInfo::Extent(), BDSBeamPipeInfo::ExtentInner(), BDSBeamPipeFactory::GetAppropriateFactory(), BDSGeometryFactory::GetAppropriateFactory(), BDSMagnetOuterFactory::GetAppropriateFactory(), BDSTunnelFactory::GetAppropriateFactory(), BDSScorerFactory::GetAppropriateScorer(), BDSBeamlineIntegral::Integrate(), BDSIntegratorSet::Integrator(), BDS::IntegratorSet(), BDS::InterpolatorTypeIsAuto(), BDSFieldLoader::LoadEField(), BDSFieldLoader::LoadEMField(), BDSFieldLoader::LoadMagField(), BDS::NDimensionsOfFieldFormat(), BDS::NDimensionsOfInterpolatorType(), BDSPrimaryGeneratorFileHEPMC::OpenFile(), BDSParallelWorldSampler::Place(), BDSComponentFactory::PrepareCavityStrength(), BDSComponentFactory::PrepareMagnetOuterFieldInfo(), BDSSDManager::SensitiveDetector(), BDSBunchSigmaMatrix::SetOptions(), and BDSCollimatorCrystal::TransverseOffsetToEdge().
|
friend |
operators for ordering
Definition at line 72 of file BDSTypeSafeEnum.hh.
|
friend |
operators for ordering
Definition at line 73 of file BDSTypeSafeEnum.hh.
|
friend |
stream operator, returns string from dictionary if defined, else underlying type (typically int)
Definition at line 79 of file BDSTypeSafeEnum.hh.
|
friend |
operators for ordering
Definition at line 74 of file BDSTypeSafeEnum.hh.
|
friend |
operators for ordering
Definition at line 71 of file BDSTypeSafeEnum.hh.
|
friend |
operators for ordering
Definition at line 75 of file BDSTypeSafeEnum.hh.
|
friend |
operators for ordering
Definition at line 76 of file BDSTypeSafeEnum.hh.
|
staticprotected |
static map from to string (optional), needs to be defined explicitly can be used for printing (in << operator)
Definition at line 55 of file BDSTypeSafeEnum.hh.
|
private |
Definition at line 49 of file BDSTypeSafeEnum.hh.