Loading...
Searching...
No Matches
key.h
1//
2// Copyright 2018 Pixar
3//
4// Licensed under the Apache License, Version 2.0 (the "Apache License")
5// with the following modification; you may not use this file except in
6// compliance with the Apache License and the following modification to it:
7// Section 6. Trademarks. is deleted and replaced with:
8//
9// 6. Trademarks. This License does not grant permission to use the trade
10// names, trademarks, service marks, or product names of the Licensor
11// and its affiliates, except as required to comply with Section 4(c) of
12// the License and to reproduce the content of the NOTICE file.
13//
14// You may obtain a copy of the Apache License at
15//
16// http://www.apache.org/licenses/LICENSE-2.0
17//
18// Unless required by applicable law or agreed to in writing, software
19// distributed under the Apache License with the above modification is
20// distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21// KIND, either express or implied. See the Apache License for the specific
22// language governing permissions and limitations under the Apache License.
23//
24
25#ifndef PXR_BASE_TRACE_KEY_H
26#define PXR_BASE_TRACE_KEY_H
27
28#include "pxr/pxr.h"
29#include "pxr/base/trace/staticKeyData.h"
30
31
32PXR_NAMESPACE_OPEN_SCOPE
33
40class TraceKey {
41public:
43 constexpr TraceKey(const TraceStaticKeyData& data) : _ptr(&data) {}
44
46 bool operator == (const TraceKey& other) const {
47 if (_ptr == other._ptr) {
48 return true;
49 } else {
50 return *_ptr == *other._ptr;
51 }
52 }
53
55 size_t Hash() const {
56 return reinterpret_cast<size_t>(_ptr)/sizeof(TraceStaticKeyData);
57 }
58
60 struct HashFunctor {
61 size_t operator()(const TraceKey& key) const {
62 return key.Hash();
63 }
64 };
65
66private:
67 const TraceStaticKeyData* _ptr;
68
69 // TraceCollection converts TraceKeys to TfTokens for visitors.
70 friend class TraceCollection;
71};
72
73PXR_NAMESPACE_CLOSE_SCOPE
74
75#endif // PXR_BASE_TRACE_KEY_H
This class owns lists of TraceEvent instances per thread, and allows read access to them.
Definition: collection.h:49
A wrapper around a TraceStaticKeyData pointer that is stored in TraceEvent instances.
Definition: key.h:40
constexpr TraceKey(const TraceStaticKeyData &data)
Constructor.
Definition: key.h:43
bool operator==(const TraceKey &other) const
Equality comparison.
Definition: key.h:46
size_t Hash() const
Hash function.
Definition: key.h:55
This class holds data necessary to create keys for TraceEvent instances.
Definition: staticKeyData.h:43
A Hash functor which may be used to store keys in a TfHashMap.
Definition: key.h:60