NEURON
nrnmusicapi.h
Go to the documentation of this file.
1 #pragma once
2 
3 extern "C" {
4 
5 extern int nrnmusic;
6 // Note: MPI_Comm nrnmusic_comm; in nrnmpi.cpp and nrnmusic.cpp
7 
8 #if !defined(NRNMUSIC_DYNAMIC) || defined(IN_NRNMUSIC_CPP)
9 // resolved at link time
10 extern void nrnmusic_runtime_phase();
11 extern void nrnmusic_injectlist(void*, double);
12 extern void nrnmusic_init(int* parg, char*** pargv);
13 extern void nrnmusic_terminate();
14 
15 #else // NRNMUSIC_DYNAMIC
16 
17 // resolved at runtime dynamic loading
18 extern void (*p_nrnmusic_runtime_phase)();
19 extern void (*p_nrnmusic_injectlist)(void*, double);
20 extern void (*p_nrnmusic_init)(int* parg, char*** pargv);
21 extern void (*p_nrnmusic_terminate)();
22 
23 // But everywhere we use the standard api names
24 #define nrnmusic_runtime_phase() \
25  if (p_nrnmusic_runtime_phase) { \
26  (*p_nrnmusic_runtime_phase)(); \
27  }
28 #define nrnmusic_injectlist(a, b) \
29  if (p_nrnmusic_injectlist) { \
30  (*p_nrnmusic_injectlist)(a, b); \
31  }
32 #define nrnmusic_init(a, b) \
33  if (p_nrnmusic_init) { \
34  (*p_nrnmusic_init)(a, b); \
35  }
36 #define nrnmusic_terminate() \
37  if (p_nrnmusic_terminate) { \
38  (*p_nrnmusic_terminate)(); \
39  }
40 
41 #endif // NRNMUSIC_DYNAMIC
42 
43 } // end of extern "C"
void(* p_nrnmusic_runtime_phase)()
void(* p_nrnmusic_init)(int *parg, char ***pargv)
void(* p_nrnmusic_terminate)()
void(* p_nrnmusic_injectlist)(void *, double)
void nrnmusic_terminate()
Definition: nrnmusic.cpp:221
void nrnmusic_runtime_phase()
Definition: nrnmusic.cpp:231
void nrnmusic_init(int *parg, char ***pargv)
Definition: nrnmusic.cpp:200
int nrnmusic
void nrnmusic_injectlist(void *, double)
Definition: nrnmusic.cpp:100