timemory 3.3.0
Modular C++ Toolkit for Performance Analysis and Logging. Profiling API and Tools for C, C++, CUDA, Fortran, and Python. The C++ template API is essentially a framework to creating tools: it is designed to provide a unifying interface for recording various performance measurements alongside data logging and interfaces to other tools.
metadata.hpp
Go to the documentation of this file.
1// MIT License
2//
3// Copyright (c) 2020, The Regents of the University of California,
4// through Lawrence Berkeley National Laboratory (subject to receipt of any
5// required approvals from the U.S. Dept. of Energy). All rights reserved.
6//
7// Permission is hereby granted, free of charge, to any person obtaining a copy
8// of this software and associated documentation files (the "Software"), to deal
9// in the Software without restriction, including without limitation the rights
10// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11// copies of the Software, and to permit persons to whom the Software is
12// furnished to do so, subject to the following conditions:
13//
14// The above copyright notice and this permission notice shall be included in all
15// copies or substantial portions of the Software.
16//
17// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23// SOFTWARE.
24
25#pragma once
26
27#include "timemory/enum.h"
29
30#include <string>
31
32namespace tim
33{
34namespace component
35{
36/// \struct tim::component::metadata
37/// \brief Provides forward declaration support for assigning static metadata properties.
38/// This is most useful for specialization of template components. If this class
39/// is specialized for component, then the component does not need to provide
40/// the static member functions `label()` and `description()`.
41///
42template <typename Tp>
44{
45 using type = Tp;
48 static std::string name();
49 static std::string label();
50 static std::string description();
51 static std::string extra_description() { return ""; }
52 static constexpr bool specialized() { return false; }
53};
54//
55//--------------------------------------------------------------------------------------//
56//
57template <typename Tp>
60{
61 return try_demangle<Tp>();
62}
63//
64//--------------------------------------------------------------------------------------//
65//
66template <typename Tp>
69{
70 return try_demangle<Tp>();
71}
72//
73//--------------------------------------------------------------------------------------//
74//
75template <typename Tp>
78{
79 return try_demangle<Tp>();
80}
81//
82} // namespace component
83} // namespace tim
int TIMEMORY_COMPONENT
Definition: enum.h:659
#define TIMEMORY_COMPONENTS_END
Definition: enum.h:155
Definition: kokkosp.cpp:39
tim::mpl::apply< std::string > string
Definition: macros.hpp:53
Provides forward declaration support for assigning static metadata properties. This is most useful fo...
Definition: metadata.hpp:44
TIMEMORY_COMPONENT value_type
Definition: metadata.hpp:46
static std::string label()
Definition: metadata.hpp:68
static constexpr TIMEMORY_COMPONENT value
Definition: metadata.hpp:47
static std::string name()
Definition: metadata.hpp:59
static std::string extra_description()
Definition: metadata.hpp:51
static constexpr bool specialized()
Definition: metadata.hpp:52
static std::string description()
Definition: metadata.hpp:77