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 
35 {
37 {
38  private:
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 <>
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 
bool operator<(const DatabaseKey &other) const
Definition: database_key.h:64
bool operator!=(const DatabaseKey &other) const
Definition: database_key.h:59
bool operator==(const DatabaseKey &other) const
Definition: database_key.h:53
DatabaseKey(int profile_key, int node_key)
Definition: database_key.h:44


swri_profiler_tools
Author(s):
autogenerated on Fri Nov 27 2020 03:44:18