109{
110 namespace mpl = ::rocprofiler::sdk::mpl;
111
114
116
117 auto _get_dbg = [&]() {
118 auto* _dbg = ctx.event()->add_debug_annotations();
119 _dbg->set_name(std::string_view{std::forward<Np>(_name)}.data());
120 return _dbg;
121 };
122
123 if constexpr(std::is_same<value_type, std::string_view>::value)
124 {
125 _get_dbg()->set_string_value(_val.data());
126 }
127 else if constexpr(mpl::is_string_type<value_type>::value)
128 {
129 _get_dbg()->set_string_value(std::forward<Tp>(_val));
130 }
131 else if constexpr(std::is_same<value_type, bool>::value)
132 {
133 _get_dbg()->set_bool_value(_val);
134 }
135 else if constexpr(std::is_enum<value_type>::value)
136 {
137 _get_dbg()->set_int_value(static_cast<int64_t>(_val));
138 }
139 else if constexpr(std::is_floating_point<value_type>::value)
140 {
141 _get_dbg()->set_double_value(static_cast<double>(_val));
142 }
143 else if constexpr(std::is_integral<value_type>::value)
144 {
145 if constexpr(std::is_unsigned<value_type>::value)
146 {
147 _get_dbg()->set_uint_value(_val);
148 }
149 else
150 {
151 _get_dbg()->set_int_value(_val);
152 }
153 }
154 else if constexpr(std::is_pointer<value_type>::value)
155 {
156 _get_dbg()->set_pointer_value(reinterpret_cast<uint64_t>(_val));
157 }
158 else if constexpr(mpl::can_stringify<value_type>::value)
159 {
160 auto _ss = std::stringstream{};
161 _ss << std::forward<Tp>(_val);
162 _get_dbg()->set_string_value(_ss.str());
163 }
164 else
165 {
166 static_assert(std::is_empty<value_type>::value, "Error! unsupported data type");
167 }
168}
typename unqualified_identity< Tp >::type unqualified_identity_t