// Copyright (c) Advanced Micro Devices, Inc. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include #include namespace profiler_hub::common::traits { namespace impl { template struct is_string_literal_impl : std::false_type {}; template <> struct is_string_literal_impl : std::true_type {}; template inline constexpr bool is_string_literal_impl_v = is_string_literal_impl::value; } // namespace impl template constexpr bool is_string_literal() { using tp_t = std::decay_t; return impl::is_string_literal_impl_v; } template struct is_optional : std::false_type {}; template struct is_optional> : std::true_type {}; template inline constexpr bool is_optional_v = is_optional::value; template struct is_std_unordered_map : std::false_type {}; template struct is_std_unordered_map> : std::true_type {}; template inline constexpr bool is_unordered_map_v = is_std_unordered_map::value; template static constexpr bool is_int64_bindable_v = std::is_same_v || std::is_same_v || std::is_same_v; template static constexpr bool is_int32_bindable_v = std::is_same_v || std::is_same_v; template static constexpr bool is_text_bindable_v = std::is_same_v; template static constexpr bool is_string_bindable_v = std::is_same_v; template static constexpr bool is_double_bindable_v = std::is_floating_point_v; template static constexpr bool is_supported_bind_type_v = is_int64_bindable_v || is_int32_bindable_v || is_text_bindable_v || is_double_bindable_v; } // namespace profiler_hub::common::traits