namespace rgpot::vesin_compatΒΆ
namespace vesin_compat {
// structs
template <typename Options, typename = void>
struct has_algorithm_member;
template <typename Options>
struct has_algorithm_member<Options, std::void_t<decltype(std::declval<Options>().algorithm)>>;
template <typename Options, typename = void>
struct has_n_threads_member;
template <typename Options>
struct has_n_threads_member<Options, std::void_t<decltype(std::declval<Options>().n_threads)>>;
template <typename Options, typename = void>
struct has_skin_member;
template <typename Options>
struct has_skin_member<Options, std::void_t<decltype(std::declval<Options>().skin)>>;
template <typename Device, typename = void>
struct is_device_struct;
template <typename Device>
struct is_device_struct<Device, std::void_t<decltype(std::declval<Device>().type), decltype(std::declval<Device>().device_id)>>;
// global functions
template <typename Device = VesinDevice>
Device make_cpu_device();
template <typename Options>
void set_algorithm_default(Options& options);
template <typename Options>
void set_skin(Options& options, double skin);
template <typename Options>
void set_n_threads(Options& options, std::int32_t n_threads);
template <typename Options>
void fill_neighbor_options(Options& options, double cutoff, bool full_list);
} // namespace vesin_compat