Geant4
11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4TableTemplate.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
/*
27
* File: G4TableTemplate.hh
28
* Author: B. Wendt (wendbryc@isu.edu)
29
*
30
* Created on August 2, 2011, 10:21 AM
31
*/
32
33
#ifndef G4TABLETEMPLATE_HH
34
#define G4TABLETEMPLATE_HH
35
36
#include "
G4FFGDefaultValues.hh
"
37
#include "
globals.hh
"
38
39
#include <vector>
40
41
/** G4TableTemplate is essentially a wrapper around a std::vector designed
42
* to work specifically with pointers.
43
*/
44
template
<
class
T>
45
class
G4TableTemplate
46
{
47
public
:
48
/** Default constructor */
49
G4TableTemplate
() =
default
;
50
/** Adds a container to the table */
51
void
G4AddContainer
(T* NewContainer);
52
/** Gets a pointer to the table */
53
G4TableTemplate
*
G4GetTable
();
54
/** Retrieve a container from the table */
55
T*
G4GetContainer
(
unsigned
int
WhichContainer);
56
/** Create a new blank container */
57
T*
G4GetNewContainer
();
58
/** Create a new container that is constructed with a G4int */
59
T*
G4GetNewContainer
(
G4int
DefaultValue);
60
/** Get the number of elements in the table */
61
G4long
G4GetNumberOfElements
();
62
63
private
:
64
std::vector<T*> ContainerTable_;
65
66
public
:
67
~G4TableTemplate
();
68
};
69
70
template
<
class
T>
71
void
G4TableTemplate<T>::G4AddContainer
(T* NewContainer)
72
{
73
ContainerTable_.push_back(NewContainer);
74
}
75
76
template
<
class
T>
77
G4TableTemplate<T>
*
G4TableTemplate<T>::G4GetTable
()
78
{
79
return
this
;
80
}
81
82
template
<
class
T>
83
T*
G4TableTemplate<T>::G4GetContainer
(
unsigned
int
WhichContainer)
84
{
85
if
(WhichContainer < ContainerTable_.size()) {
86
return
ContainerTable_[WhichContainer];
87
}
88
89
return
nullptr
;
90
}
91
92
template
<
class
T>
93
T*
G4TableTemplate<T>::G4GetNewContainer
()
94
{
95
ContainerTable_.push_back(
new
T);
96
97
return
ContainerTable_.back();
98
}
99
100
template
<
class
T>
101
T*
G4TableTemplate<T>::G4GetNewContainer
(
G4int
DefaultValue)
102
{
103
ContainerTable_.push_back(
new
T(DefaultValue));
104
105
return
ContainerTable_.back();
106
}
107
108
template
<
class
T>
109
G4long
G4TableTemplate<T>::G4GetNumberOfElements
()
110
{
111
return
ContainerTable_.size();
112
}
113
114
template
<
class
T>
115
G4TableTemplate<T>::~G4TableTemplate
()
116
{
117
for
(
unsigned
int
i = 0; i < ContainerTable_.size(); i++) {
118
delete
ContainerTable_[i];
119
}
120
}
121
122
#endif
/* G4TABLETEMPLATE_HH */
G4FFGDefaultValues.hh
G4long
long G4long
Definition
G4Types.hh:87
G4int
int G4int
Definition
G4Types.hh:85
G4TableTemplate::G4GetTable
G4TableTemplate * G4GetTable()
Definition
G4TableTemplate.hh:77
G4TableTemplate::G4GetNumberOfElements
G4long G4GetNumberOfElements()
Definition
G4TableTemplate.hh:109
G4TableTemplate::G4AddContainer
void G4AddContainer(T *NewContainer)
Definition
G4TableTemplate.hh:71
G4TableTemplate::~G4TableTemplate
~G4TableTemplate()
Definition
G4TableTemplate.hh:115
G4TableTemplate::G4GetNewContainer
T * G4GetNewContainer()
Definition
G4TableTemplate.hh:93
G4TableTemplate::G4TableTemplate
G4TableTemplate()=default
G4TableTemplate::G4GetContainer
T * G4GetContainer(unsigned int WhichContainer)
Definition
G4TableTemplate.hh:83
globals.hh
geant4-v11.4.0
source
processes
hadronic
models
particle_hp
include
G4TableTemplate.hh
Generated by
1.16.1