#ifndef KOKKOS_ANONYMOUSSPACE_HPP
#define KOKKOS_ANONYMOUSSPACE_HPP
#include <Kokkos_Core_fwd.hpp>
#include <Kokkos_Concepts.hpp>
#include <cstddef>
namespace Kokkos {
class AnonymousSpace {
public:
typedef AnonymousSpace memory_space;
typedef Kokkos::DefaultExecutionSpace execution_space;
typedef size_t size_type;
typedef Kokkos::Device< execution_space, memory_space > device_type;
AnonymousSpace() = default;
AnonymousSpace( AnonymousSpace && rhs ) = default;
AnonymousSpace( const AnonymousSpace & rhs ) = default;
AnonymousSpace & operator = ( AnonymousSpace && ) = default;
AnonymousSpace & operator = ( const AnonymousSpace & ) = default;
~AnonymousSpace() = default;
static constexpr const char* name() { return "Anonymous"; }
};
}
namespace Kokkos {
namespace Impl {
template<typename OtherSpace>
struct MemorySpaceAccess< Kokkos::AnonymousSpace , OtherSpace > {
enum { assignable = true };
enum { accessible = true };
enum { deepcopy = true };
};
template<typename OtherSpace>
struct MemorySpaceAccess< OtherSpace, Kokkos::AnonymousSpace > {
enum { assignable = true };
enum { accessible = true };
enum { deepcopy = true };
};
template<>
struct MemorySpaceAccess< Kokkos::AnonymousSpace, Kokkos::AnonymousSpace > {
enum { assignable = true };
enum { accessible = true };
enum { deepcopy = true };
};
template<typename OtherSpace>
struct VerifyExecutionCanAccessMemorySpace<OtherSpace, Kokkos::AnonymousSpace>
{
enum {value = 1};
KOKKOS_INLINE_FUNCTION static void verify(void) {}
KOKKOS_INLINE_FUNCTION static void verify(const void *) {}
};
template<typename OtherSpace>
struct VerifyExecutionCanAccessMemorySpace<Kokkos::AnonymousSpace, OtherSpace>
{
enum {value = 1};
KOKKOS_INLINE_FUNCTION static void verify(void) {}
KOKKOS_INLINE_FUNCTION static void verify(const void *) {}
};
}
}
#endif