// Copyright (c) Advanced Micro Devices, Inc. // SPDX-License-Identifier: MIT #pragma once #include "writers/interfaces/info_registration_writer_interface.hpp" #include "writers/interfaces/kernel_dispatch_writer_interface.hpp" #include "writers/interfaces/memory_alloc_writer_interface.hpp" #include "writers/interfaces/memory_copy_writer_interface.hpp" #include "writers/interfaces/pmc_event_writer_interface.hpp" #include "writers/interfaces/region_writer_interface.hpp" #include namespace profiler_hub { namespace detail { template struct has_required_type_aliases : std::false_type {}; template struct has_required_type_aliases> : std::true_type {}; template class Interface> struct satisfies_interface : std::is_base_of, Writer> {}; template struct has_valid_writer_interfaces : std::false_type {}; template struct has_valid_writer_interfaces< Policy, std::enable_if_t::value>> : std::bool_constant::value && satisfies_interface::value && satisfies_interface::value && satisfies_interface::value && satisfies_interface::value && satisfies_interface::value> {}; } // namespace detail template struct is_valid_writer_policy : std::bool_constant::value && detail::has_valid_writer_interfaces::value> {}; template inline constexpr bool is_valid_writer_policy_v = is_valid_writer_policy::value; } // namespace profiler_hub