HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
dynamicKey.h
Go to the documentation of this file.
1 //
2 // Copyright 2018 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 
8 #ifndef PXR_BASE_TRACE_DYNAMIC_KEY_H
9 #define PXR_BASE_TRACE_DYNAMIC_KEY_H
10 
11 #include "pxr/pxr.h"
13 #include "pxr/base/tf/token.h"
14 
16 
17 ////////////////////////////////////////////////////////////////////////////////
18 /// \class TraceDynamicKey
19 ///
20 /// This class stores data used to create dynamic keys which can be referenced
21 /// in TraceEvent instances.
22 ///
23 /// Is a key is known at compile time, it is preferable to use
24 /// a static constexpr TraceStaticKeyData instance instead.
26 public:
27  /// Constructor for TfToken.
28  TraceDynamicKey(TfToken name) : _key(std::move(name)) {
29  _data._name = _key.GetText();
30  }
31 
32  /// Constructor for string.
33  TraceDynamicKey(const std::string& name) : _key(name) {
34  _data._name = _key.GetText();
35  }
36 
37  /// Constructor for C string.
38  TraceDynamicKey(const char* name) : _key(name) {
39  _data._name = _key.GetText();
40  }
41 
42  /// Equality operator.
43  bool operator == (const TraceDynamicKey& other) const {
44  return _key == other._key;
45  }
46 
47  /// Return a cached hash code for this key.
48  size_t Hash() const {
49  return _key.Hash();
50  }
51 
52  /// A Hash functor which uses the cached hash which may be used to store
53  /// keys in a TfHashMap.
54  struct HashFunctor {
55  size_t operator()(const TraceDynamicKey& key) const {
56  return key.Hash();
57  }
58  };
59 
60  /// Returns a reference to TraceStaticKeyData.
61  const TraceStaticKeyData& GetData() const { return _data; }
62 
63 private:
64  TraceStaticKeyData _data;
65  TfToken _key;
66 };
67 
69 
70 #endif // PXR_BASE_TRACE_DYNAMIC_KEY_H
TraceDynamicKey(const std::string &name)
Constructor for string.
Definition: dynamicKey.h:33
const TraceStaticKeyData & GetData() const
Returns a reference to TraceStaticKeyData.
Definition: dynamicKey.h:61
size_t Hash() const
Return a cached hash code for this key.
Definition: dynamicKey.h:48
size_t operator()(const TraceDynamicKey &key) const
Definition: dynamicKey.h:55
Definition: token.h:70
GLuint const GLchar * name
Definition: glcorearb.h:786
TraceDynamicKey(TfToken name)
Constructor for TfToken.
Definition: dynamicKey.h:28
char const * GetText() const
Definition: token.h:179
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
TraceDynamicKey(const char *name)
Constructor for C string.
Definition: dynamicKey.h:38
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
bool operator==(const TraceDynamicKey &other) const
Equality operator.
Definition: dynamicKey.h:43
size_t Hash() const
Return a size_t hash for this token.
Definition: token.h:415