Main Page
Namespaces
Namespace List
Namespace Members
All
Functions
Variables
Typedefs
Enumerations
Enumerator
Classes
Class List
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
~
Functions
a
c
d
e
g
h
i
l
m
n
o
p
r
s
t
u
v
~
Variables
a
b
c
d
e
f
i
l
m
n
p
r
t
u
v
w
Typedefs
Related Functions
Files
File List
File Members
All
Functions
include
swri_profiler_tools
database_key.h
Go to the documentation of this file.
1
// *****************************************************************************
2
//
3
// Copyright (c) 2015, Southwest Research Institute® (SwRI®)
4
// All rights reserved.
5
//
6
// Redistribution and use in source and binary forms, with or without
7
// modification, are permitted provided that the following conditions are met:
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above copyright
11
// notice, this list of conditions and the following disclaimer in the
12
// documentation and/or other materials provided with the distribution.
13
// * Neither the name of Southwest Research Institute® (SwRI®) nor the
14
// names of its contributors may be used to endorse or promote products
15
// derived from this software without specific prior written permission.
16
//
17
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
// ARE DISCLAIMED. IN NO EVENT SHALL Southwest Research Institute® BE LIABLE
21
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
24
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
27
// DAMAGE.
28
//
29
// *****************************************************************************
30
31
#ifndef SWRI_PROFILER_TOOLS_DATABASE_KEY_H_
32
#define SWRI_PROFILER_TOOLS_DATABASE_KEY_H_
33
34
namespace
swri_profiler_tools
35
{
36
struct
DatabaseKey
37
{
38
private
:
39
int
profile_key_
;
40
int
node_key_
;
41
42
public
:
43
DatabaseKey
() :
profile_key_
(-1),
node_key_
(-1) {}
44
DatabaseKey
(
int
profile_key,
int
node_key)
45
:
profile_key_
(profile_key),
node_key_
(node_key) {}
46
47
bool
isValid
()
const
{
return
profile_key_
>= 0 &&
node_key_
>= 0; }
48
49
int
profileKey
()
const
{
return
profile_key_
; }
50
int
nodeKey
()
const
{
return
node_key_
; }
51
52
53
bool
operator==
(
const
DatabaseKey
&other)
const
54
{
55
return
(
profile_key_
== other.
profile_key_
&&
56
node_key_
== other.
node_key_
);
57
}
58
59
bool
operator!=
(
const
DatabaseKey
&other)
const
60
{
61
return
!(*
this
== other);
62
}
63
64
bool
operator<
(
const
DatabaseKey
&other)
const
65
{
66
if
(
profile_key_
== other.
profile_key_
) {
67
return
node_key_
< other.
node_key_
;
68
}
else
{
69
return
profile_key_
< other.
profile_key_
;
70
}
71
}
72
};
73
}
// namespace swri_profiler_tools
74
75
// Define a hash function on a DatabaseKey to support
76
// std::unordered_map and std::unordered_set.
77
namespace
std
{
78
template
<>
79
struct
hash<
swri_profiler_tools
::DatabaseKey> {
80
size_t
operator () (
const
swri_profiler_tools::DatabaseKey
&key)
const
81
{
82
// This should be a fine hash function because it's very unlikely
83
// someone would be working with hundreds of profiles at once.
84
return
key.
profileKey
()*1000 + key.
nodeKey
();
85
}
86
};
87
}
// namespace std
88
#endif // SWRI_PROFILER_TOOLS_DATABASE_KEY_H_
89
swri_profiler_tools::DatabaseKey::isValid
bool isValid() const
Definition:
database_key.h:47
swri_profiler_tools::DatabaseKey
Definition:
database_key.h:36
swri_profiler_tools::DatabaseKey::operator==
bool operator==(const DatabaseKey &other) const
Definition:
database_key.h:53
swri_profiler_tools::DatabaseKey::nodeKey
int nodeKey() const
Definition:
database_key.h:50
swri_profiler_tools::DatabaseKey::DatabaseKey
DatabaseKey(int profile_key, int node_key)
Definition:
database_key.h:44
swri_profiler_tools::DatabaseKey::operator<
bool operator<(const DatabaseKey &other) const
Definition:
database_key.h:64
swri_profiler_tools::DatabaseKey::node_key_
int node_key_
Definition:
database_key.h:40
std
swri_profiler_tools::DatabaseKey::profile_key_
int profile_key_
Definition:
database_key.h:39
swri_profiler_tools::DatabaseKey::operator!=
bool operator!=(const DatabaseKey &other) const
Definition:
database_key.h:59
swri_profiler_tools::DatabaseKey::profileKey
int profileKey() const
Definition:
database_key.h:49
swri_profiler_tools
Definition:
database_key.h:34
swri_profiler_tools::DatabaseKey::DatabaseKey
DatabaseKey()
Definition:
database_key.h:43
swri_profiler_tools
Author(s):
autogenerated on Wed Mar 2 2022 01:06:28