EGSnrc C++ class library
Report PIRS-898 (2021)
Iwan Kawrakow, Ernesto Mainegra-Hing, Frederic Tessier, Reid Townson and Blake Walters
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Coding Examples
File List
File Members
egs++
shapes
egs_extended_shape
egs_extended_shape.cpp
Go to the documentation of this file.
1
/*
2
###############################################################################
3
#
4
# EGSnrc egs++ extended shape
5
# Copyright (C) 2015 National Research Council Canada
6
#
7
# This file is part of EGSnrc.
8
#
9
# EGSnrc is free software: you can redistribute it and/or modify it under
10
# the terms of the GNU Affero General Public License as published by the
11
# Free Software Foundation, either version 3 of the License, or (at your
12
# option) any later version.
13
#
14
# EGSnrc is distributed in the hope that it will be useful, but WITHOUT ANY
15
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16
# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
17
# more details.
18
#
19
# You should have received a copy of the GNU Affero General Public License
20
# along with EGSnrc. If not, see <http://www.gnu.org/licenses/>.
21
#
22
###############################################################################
23
#
24
# Author: Iwan Kawrakow, 2005
25
#
26
# Contributors:
27
#
28
###############################################################################
29
*/
30
31
37
#include "
egs_extended_shape.h
"
38
#include "
egs_input.h
"
39
#include "
egs_functions.h
"
40
41
extern
"C"
{
42
43
EGS_EXTENDED_SHAPE_EXPORT
EGS_BaseShape
*createShape(
EGS_Input
*input,
44
EGS_ObjectFactory
*f) {
45
if
(!input) {
46
egsWarning
(
"createShape(extended shape): null input?\n"
);
47
return
0;
48
}
49
vector<EGS_Float> h;
50
int
err = input->
getInput
(
"extension"
,h);
51
if
(err || h.size() != 2) {
52
egsWarning
(
"createShape(extended shape): wrong/missing "
53
"'extension' input\n"
);
54
return
0;
55
}
56
EGS_Input
*ishape = input->
takeInputItem
(
"shape"
,
false
);
57
EGS_BaseShape
*shape=0;;
58
if
(ishape) {
59
shape =
EGS_BaseShape::createShape
(ishape);
60
delete
ishape;
61
}
62
if
(!shape) {
63
string
shape_name;
64
int
err = input->
getInput
(
"shape name"
,shape_name);
65
if
(err) {
66
egsWarning
(
"createShape(extended shape): no inline shape definition"
67
" and no 'shape name' keyword\n"
);
68
return
0;
69
}
70
shape =
EGS_BaseShape::getShape
(shape_name);
71
if
(!shape) {
72
egsWarning
(
"createShape(extended shape): no shape named %s "
73
"exists\n"
,shape_name.c_str());
74
return
0;
75
}
76
}
77
EGS_ExtendedShape
*s =
new
EGS_ExtendedShape
(shape,h[0],h[1],
""
,f);
78
s->
setName
(input);
79
s->
setTransformation
(input);
80
return
s;
81
}
82
83
}
egs_extended_shape.h
An extended shape.
EGS_BaseShape::setTransformation
void setTransformation(EGS_Input *inp)
Set the transformation attached to this shape.
Definition:
egs_shapes.cpp:68
EGS_BaseShape::createShape
static EGS_BaseShape * createShape(EGS_Input *inp)
Create a shape from the information pointed to by inp.
Definition:
egs_shapes.cpp:51
EGS_ExtendedShape
An extended shape.
Definition:
egs_extended_shape.h:87
egs_input.h
EGS_Input class header file.
EGS_BaseShape::getShape
static EGS_BaseShape * getShape(const string &Name)
Get a pointer to the shape named Name.
Definition:
egs_shapes.cpp:63
egs_functions.h
Global egspp functions header file.
EGS_BaseShape
Base shape class. All shapes in the EGSnrc C++ class library are derived from EGS_BaseShape.
Definition:
egs_shapes.h:112
EGS_ObjectFactory
An object factory.
Definition:
egs_object_factory.h:206
EGS_Object::setName
void setName(EGS_Input *inp)
Set the name of the object from the information provided by inp.
Definition:
egs_object_factory.cpp:93
EGS_Input
A class for storing information in a tree-like structure of key-value pairs. This class is used throu...
Definition:
egs_input.h:182
EGS_Input::takeInputItem
EGS_Input * takeInputItem(const string &key, bool self=true)
Get the property named key.
Definition:
egs_input.cpp:226
EGS_Input::getInput
int getInput(const string &key, vector< string > &values) const
Assign values to an array of strings from an input identified by key.
Definition:
egs_input.cpp:338
egsWarning
EGS_InfoFunction EGS_EXPORT egsWarning
Always use this function for reporting warnings.
Definition:
egs_functions.cpp:135
Generated by
1.8.5