HPCToolkit
Unique.cpp
Go to the documentation of this file.
1
// -*-Mode: C++;-*-
2
3
// * BeginRiceCopyright *****************************************************
4
//
5
// $HeadURL$
6
// $Id$
7
//
8
// --------------------------------------------------------------------------
9
// Part of HPCToolkit (hpctoolkit.org)
10
//
11
// Information about sources of support for research and development of
12
// HPCToolkit is at 'hpctoolkit.org' and in 'README.Acknowledgments'.
13
// --------------------------------------------------------------------------
14
//
15
// Copyright ((c)) 2002-2019, Rice University
16
// All rights reserved.
17
//
18
// Redistribution and use in source and binary forms, with or without
19
// modification, are permitted provided that the following conditions are
20
// met:
21
//
22
// * Redistributions of source code must retain the above copyright
23
// notice, this list of conditions and the following disclaimer.
24
//
25
// * Redistributions in binary form must reproduce the above copyright
26
// notice, this list of conditions and the following disclaimer in the
27
// documentation and/or other materials provided with the distribution.
28
//
29
// * Neither the name of Rice University (RICE) nor the names of its
30
// contributors may be used to endorse or promote products derived from
31
// this software without specific prior written permission.
32
//
33
// This software is provided by RICE and contributors "as is" and any
34
// express or implied warranties, including, but not limited to, the
35
// implied warranties of merchantability and fitness for a particular
36
// purpose are disclaimed. In no event shall RICE or contributors be
37
// liable for any direct, indirect, incidental, special, exemplary, or
38
// consequential damages (including, but not limited to, procurement of
39
// substitute goods or services; loss of use, data, or profits; or
40
// business interruption) however caused and on any theory of liability,
41
// whether in contract, strict liability, or tort (including negligence
42
// or otherwise) arising in any way out of the use of this software, even
43
// if advised of the possibility of such damage.
44
//
45
// ******************************************************* EndRiceCopyright *
46
47
// ***************************************************************************
48
//
49
// File:
50
// Unique.C
51
//
52
// Purpose:
53
// Implements Unique class.
54
//
55
// Description:
56
// See Unique.h.
57
//
58
// History:
59
// 09/24/96 - dbaker - Creation (adapted from Memento).
60
//
61
// ***************************************************************************
62
63
// ************************* System Include Files ***************************
64
65
// *************************** User Include Files ****************************
66
67
#include "
Unique.hpp
"
68
#include "
diagnostics.h
"
69
70
// ************************** Variable Definitions ***************************
71
72
std::set<std::string>
Unique::classNameSet
;
// Set of saved class names.
73
74
75
// ***************************************************************************
76
//
77
// Class method:
78
// Unique::Unique protected (constructor)
79
//
80
// Purpose:
81
// Constructor for normal non-copyable object.
82
//
83
// ***************************************************************************
84
85
Unique::Unique
(): className()
86
{
87
}
88
89
90
91
// ***************************************************************************
92
//
93
// Class method:
94
// Unique::Unique protected (constructor)
95
//
96
// Parameters:
97
// const char* theClassName -- the name of the class, presumably unique.
98
//
99
// Purpose:
100
// Constructor for singleton object.
101
//
102
// ***************************************************************************
103
104
Unique::Unique
(
const
char
* theClassName)
105
:
className
((theClassName) ? theClassName :
""
)
106
{
107
if
(
classNameSet
.count(
className
) != 0) {
108
DIAG_Die
(
"Trying to create another "
+
className
+
" instance"
);
109
}
110
else
{
111
classNameSet
.insert(
className
);
112
}
113
}
114
115
116
// ***************************************************************************
117
//
118
// Class method:
119
// Unique::~Unique public (destructor)
120
//
121
// Parameters:
122
// none
123
//
124
// Purpose:
125
// Destroys the object.
126
//
127
// History:
128
// 09/24/96 - dbaker - Creation (adapted from Memento).
129
//
130
// ***************************************************************************
131
132
Unique::~Unique
()
133
{
134
if
(
className
.length() > 0)
135
{
// remove the className from the master set
136
classNameSet
.erase(
className
);
137
}
138
}
Unique.hpp
Unique::Unique
Unique()
Definition:
Unique.cpp:85
Unique::~Unique
virtual ~Unique()
Definition:
Unique.cpp:132
diagnostics.h
Unique::classNameSet
static std::set< std::string > classNameSet
Definition:
Unique.hpp:122
DIAG_Die
#define DIAG_Die(...)
Definition:
diagnostics.h:267
Unique::className
std::string className
Definition:
Unique.hpp:133
src
lib
support
Unique.cpp
Generated by
1.8.13