51 std::shared_ptr<DDXMLElement>
54 RegistryMap::iterator it =
registry_.find( name );
55 std::shared_ptr<DDXMLElement> myret(
nullptr );
63 myret = std::make_shared<DDLBox>(
this);
65 else if (name ==
"Cone")
67 myret = std::make_shared<DDLCone>(
this);
69 else if (name ==
"Polyhedra" || name ==
"Polycone")
71 myret = std::make_shared<DDLPolyGenerator>(
this);
73 else if (name ==
"Trapezoid" || name ==
"Trd1")
75 myret = std::make_shared<DDLTrapezoid>(
this);
77 else if (name ==
"PseudoTrap")
79 myret = std::make_shared<DDLPseudoTrap>(
this);
81 else if (name ==
"Tubs" || name ==
"CutTubs" || name ==
"Tube" || name ==
"TruncTubs")
83 myret = std::make_shared<DDLTubs>(
this);
85 else if (name ==
"Torus")
87 myret = std::make_shared<DDLTorus>(
this);
89 else if (name ==
"ReflectionSolid")
91 myret = std::make_shared<DDLReflectionSolid>(
this);
93 else if (name ==
"UnionSolid" || name ==
"SubtractionSolid" 94 || name ==
"IntersectionSolid")
96 myret = std::make_shared<DDLBooleanSolid>(
this);
98 else if (name ==
"ShapelessSolid")
100 myret = std::make_shared<DDLShapelessSolid>(
this);
102 else if (name ==
"Sphere")
104 myret = std::make_shared<DDLSphere>(
this);
106 else if (name ==
"Orb")
108 myret = std::make_shared<DDLOrb>(
this);
110 else if (name ==
"EllipticalTube")
112 myret = std::make_shared<DDLEllipticalTube>(
this);
114 else if (name ==
"Ellipsoid")
116 myret = std::make_shared<DDLEllipsoid>(
this);
118 else if (name ==
"Parallelepiped")
120 myret = std::make_shared<DDLParallelepiped>(
this);
122 else if (name ==
"ExtrudedPolygon")
123 myret = std::make_shared<DDLPgonGenerator>(
this);
127 else if (name ==
"PosPart")
129 myret = std::make_shared<DDLPosPart>(
this);
131 else if (name ==
"CompositeMaterial")
133 myret = std::make_shared<DDLCompositeMaterial>(
this);
135 else if (name ==
"ElementaryMaterial")
137 myret = std::make_shared<DDLElementaryMaterial>(
this);
139 else if (name ==
"LogicalPart")
141 myret = std::make_shared<DDLLogicalPart>(
this);
143 else if (name ==
"ReflectionRotation" || name ==
"Rotation" )
145 myret = std::make_shared<DDLRotationAndReflection>(
this);
147 else if (name ==
"SpecPar")
149 myret = std::make_shared<DDLSpecPar>(
this);
151 else if (name ==
"RotationSequence")
153 myret = std::make_shared<DDLRotationSequence>(
this);
155 else if (name ==
"RotationByAxis")
157 myret = std::make_shared<DDLRotationByAxis>(
this);
160 else if (name ==
"SpecParSection") {
161 myret = std::make_shared<DDXMLElement>(
this,
true);
163 else if (name ==
"Vector") {
164 myret = std::make_shared<DDLVector>(
this);
166 else if (name ==
"Map") {
167 myret = std::make_shared<DDLMap>(
this);
169 else if (name ==
"String") {
170 myret = std::make_shared<DDLString>(
this);
172 else if (name ==
"Numeric") {
173 myret = std::make_shared<DDLNumeric>(
this);
175 else if (name ==
"Algorithm") {
176 myret = std::make_shared<DDLAlgorithm>(
this);
178 else if (name ==
"Division") {
179 myret = std::make_shared<DDLDivision>(
this);
185 else if (name ==
"MaterialFraction" 186 || name ==
"RZPoint" || name ==
"XYPoint" || name ==
"PartSelector" 187 || name ==
"Parameter" || name ==
"ZSection" || name ==
"ZXYSection" 188 || name ==
"Translation" 189 || name ==
"rSolid" || name ==
"rMaterial" 190 || name ==
"rParent" || name ==
"rChild" 191 || name ==
"rRotation" || name ==
"rReflectionRotation" 192 || name ==
"DDDefinition" )
194 myret = std::make_shared<DDXMLElement>(
this);
205 myret = std::make_shared<DDXMLElement>(
this);
std::shared_ptr< DDXMLElement > getElement(const std::string &name)
THE most important part. Getting the pointer to a given element type.