17 #ifndef nrn_spikebuf_size
18 #define nrn_spikebuf_size 0
40 throw std::runtime_error(
"mpi_manager_t::max_mpi_functions reached");
58 void resolve(
void* dlsym_handle);
59 operator bool()
const {
72 #ifdef NRNMPI_DYNAMICLOAD
73 template <
typename fptr>
76 template <
typename... Args>
80 return (*
reinterpret_cast<fptr>(
m_fptr))(std::forward<Args>(args)...);
83 #define declare_mpi_method(x) \
84 inline mpi_function<decltype(&x##_impl)> x { \
91 template <
typename... Args>
94 return (*
fptr)(std::forward<Args>(args)...);
97 #define declare_mpi_method(x) \
98 inline mpi_function<x##_impl> x { \
#define nrn_spikebuf_size
THIS FILE IS AUTO GENERATED DONT MODIFY IT.
mpi_manager_t & mpi_manager()
int gid[nrn_spikebuf_size]
double spiketime[nrn_spikebuf_size]
void resolve(void *dlsym_handle)
mpi_function_base(const char *name)
auto operator()(Args &&... args) const
std::size_t m_num_function_ptrs
void resolve_symbols(void *dlsym_handle)
constexpr static auto max_mpi_functions
std::array< mpi_function_base *, max_mpi_functions > m_function_ptrs
void register_function(mpi_function_base *ptr)