CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
Exceptions
src
ZMerrno.cc
Go to the documentation of this file.
1
// ----------------------------------------------------------------------
2
//
3
// ZMerrno.cc -- implementation of the error list mechanism.
4
//
5
// The following are instantiated here:
6
// ZMerrnoList ZMerrno;
7
//
8
// The following methods of ZMerrnoList are defined here:
9
// void write(ZMexception& x);
10
// const ZMexception* get(unsigned int k=0);
11
// string name(unsigned int k=0);
12
// void erase();
13
// unsigned int setMax(unsigned int maxNumber);
14
//
15
// Revision History:
16
// 970916 WEB Updated per code review
17
// 970917 WEB Updated per code review 2
18
// 971113 WEB Updated to conform to standard coding techniques
19
// 980615 WEB Added namespace support
20
// 980728 WEB Added destructor; fixed other memory leaks
21
//
22
// ----------------------------------------------------------------------
23
24
25
#include "
CLHEP/Exceptions/ZMerrno.h
"
26
27
#include "
CLHEP/Exceptions/ZMexception.h
"
28
29
30
namespace
zmex
{
31
32
33
//********
34
//
35
// ZMerrno
36
//
37
//********
38
39
ZMerrnoList
ZMerrno
;
40
// Define the actual ZMerrno instance !!
41
42
43
//***************
44
//
45
// ~ZMerrnoList()
46
//
47
//***************
48
49
ZMerrnoList::~ZMerrnoList
() {
50
51
while
(
size
() > 0 ) {
52
const
ZMexception
* e = errors_.front();
53
errors_.pop_front();
54
delete
const_cast<
ZMexception
*
>
( e );
55
}
56
57
}
// ZMerrnoList::~ZMerrnoList()
58
59
60
//*************************
61
//
62
// write( ZMexception & x )
63
//
64
//*************************
65
66
void
ZMerrnoList::write
(
const
ZMexception
&
x
) {
67
// copy an exception onto ZMerrno
68
69
++count_;
70
++countSinceCleared_;
71
72
if
( max_ <= 0 ) {
73
return
;
74
}
75
76
if
( max_ <=
size
() ) {
77
// Get rid of the oldest.
78
const
ZMexception
* e = errors_.front();
79
errors_.pop_front();
80
delete
const_cast<
ZMexception
*
>
( e );
81
}
82
83
errors_.push_back(
x
.clone() );
84
85
}
// ZMerrnoList::write()
86
87
88
//*******
89
//
90
// get(k)
91
//
92
//*******
93
94
const
ZMexception
*
ZMerrnoList::get
(
unsigned
int
k
)
const
{
95
// Obtain a const pointer to the exception for the latest-but-k entry
96
// on ZMerrno.
97
// Will be NULL if ZMerrno has been cleared since the last ZMthrow,
98
// and also if k is not less than ZMerrno.size().
99
100
return
k
<
size
() ? errors_[
size
()-1-
k
]
101
: 0;
102
103
}
// ZMerrnoList::get()
104
105
106
//********
107
//
108
// name(k)
109
//
110
//********
111
112
std::string
ZMerrnoList::name
(
unsigned
int
k
)
const
{
113
// Obtain the mnemonic name of the latest-but-k exception on ZMerrno
114
115
return
k
<
size
() ?
get
(
k
)->
name
()
116
: std::string();
117
118
}
// ZMerrnoList::name()
119
120
121
//********
122
//
123
// erase()
124
//
125
//********
126
127
// Remove the latest entry.
128
129
void
ZMerrnoList::erase
() {
130
131
if
(
size
() > 0 ) {
132
const
ZMexception
* e = errors_.back();
133
errors_.pop_back();
134
delete
const_cast<
ZMexception
*
>
( e );
135
}
136
137
}
// ZMerrnoList::erase()
138
139
140
//**********************************
141
//
142
// setMax (unsigned int maxNumber)
143
//
144
//**********************************
145
146
unsigned
int
ZMerrnoList::setMax
(
unsigned
int
newMax ) {
147
// Set the maximum number of exceptions to be kept in the list.
148
// Zero completely disables the ZMerrno mechanism.
149
150
unsigned
int
oldMax = max_;
151
// If a reduction, you may have to pop some old entries off:
152
while
( newMax <
size
() ) {
153
const
ZMexception
* e = errors_.front();
154
errors_.pop_front();
155
delete
const_cast<
ZMexception
*
>
( e );
156
}
157
max_ = newMax;
158
return
oldMax;
159
160
}
// ZMerrnoList::setMax()
161
162
163
}
// namespace zmex
zmex
Definition:
CLHEP/Exceptions/ZMerrno.h:52
zmex::ZMexception::name
virtual std::string name() const
Definition:
ZMexception.cc:104
zmex::ZMerrno
ZMerrnoList ZMerrno
Definition:
Exceptions/ZMerrno.h:122
zmex::ZMerrnoList::get
const ZMexception * get(unsigned int k=0) const
Definition:
ZMerrno.cc:94
zmex::ZMexception
Definition:
CLHEP/Exceptions/ZMexception.h:163
ZMerrno.h
zmex::ZMerrnoList::setMax
unsigned int setMax(unsigned int limit)
Definition:
ZMerrno.cc:146
zmex::ZMerrnoList::name
std::string name(unsigned int k=0) const
Definition:
ZMerrno.cc:112
zmex::ZMerrnoList::~ZMerrnoList
~ZMerrnoList()
Definition:
ZMerrno.cc:49
zmex::ZMerrnoList::erase
void erase()
Definition:
ZMerrno.cc:129
ZMexception.h
zmex::ZMerrnoList::size
unsigned int size() const
x
any side effects of that construction would occur twice The semantics of throw x
Definition:
whyZMthrowRethrows.txt:37
k
long k
Definition:
JamesRandomSeeding.txt:29
zmex::ZMerrnoList::write
void write(const ZMexception &x)
Definition:
ZMerrno.cc:66
Generated by
1.8.17