mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-06-07 08:15:04 +00:00
* Format * Format * Format * Remove const * Use the right template * Format * Format * add row/col instances * Add missing file * fixed * Format * Updates * Format * fixed rrr layout * Format * Update test and embed modules * Restore older version * Update year * Set -fPIC * Format * Use double for isnan * rename host folder to codegen + minor fix * add codegen CI test * add option to build components without building CK * fix the groovy syntax * fix typo * use the correct function for the codegen stage --------- Co-authored-by: Jing Zhang <jizha@amd.com> Co-authored-by: Illia Silin <98187287+illsilin@users.noreply.github.com> Co-authored-by: illsilin <Illia.Silin@amd.com>
56 lines
1.0 KiB
C++
56 lines
1.0 KiB
C++
#ifndef GUARD_HOST_TEST_RTC_INCLUDE_RTC_MANAGE_POINTER
|
|
#define GUARD_HOST_TEST_RTC_INCLUDE_RTC_MANAGE_POINTER
|
|
|
|
#include <type_traits>
|
|
#include <memory>
|
|
|
|
namespace rtc {
|
|
template <class F, F f>
|
|
struct manage_deleter
|
|
{
|
|
template <class T>
|
|
void operator()(T* x) const
|
|
{
|
|
if(x != nullptr)
|
|
{
|
|
(void)f(x);
|
|
}
|
|
}
|
|
};
|
|
|
|
struct null_deleter
|
|
{
|
|
template <class T>
|
|
void operator()(T*) const
|
|
{
|
|
}
|
|
};
|
|
|
|
template <class T, class F, F f>
|
|
using manage_ptr = std::unique_ptr<T, manage_deleter<F, f>>;
|
|
|
|
template <class T>
|
|
struct element_type
|
|
{
|
|
using type = typename T::element_type;
|
|
};
|
|
|
|
template <class T>
|
|
using remove_ptr = typename std::
|
|
conditional_t<std::is_pointer<T>{}, std::remove_pointer<T>, element_type<T>>::type;
|
|
|
|
template <class T>
|
|
using shared = std::shared_ptr<remove_ptr<T>>;
|
|
|
|
template <class T>
|
|
shared<T> share(T p)
|
|
{
|
|
return shared<T>{std::move(p)};
|
|
}
|
|
|
|
#define RTC_MANAGE_PTR(T, F) rtc::manage_ptr<std::remove_pointer_t<T>, decltype(&F), &F>
|
|
|
|
} // namespace rtc
|
|
|
|
#endif
|