8 extern Object** (*nrnpy_gui_helper_)(
const char*,
Object*);
12 #define TRY_GUI_REDIRECT_OBJ(name, obj) \
14 Object** ngh_result; \
15 if (nrnpy_gui_helper_) { \
16 ngh_result = nrnpy_gui_helper_(name, (Object*) obj); \
18 return (void*) *ngh_result; \
23 #define TRY_GUI_REDIRECT_METHOD_ACTUAL_DOUBLE(name, sym, v) \
25 Object** guiredirect_result = NULL; \
26 if (nrnpy_gui_helper_) { \
27 Object* obj = nrn_get_gui_redirect_obj(); \
28 guiredirect_result = nrnpy_gui_helper_(name, obj); \
29 if (guiredirect_result) { \
30 return (nrnpy_object_to_double_(*guiredirect_result)); \
35 #define TRY_GUI_REDIRECT_METHOD_ACTUAL_OBJ(name, sym, v) \
37 Object** guiredirect_result = NULL; \
38 if (nrnpy_gui_helper_) { \
39 Object* obj = nrn_get_gui_redirect_obj(); \
40 guiredirect_result = nrnpy_gui_helper_(name, obj); \
41 if (guiredirect_result) { \
42 return (guiredirect_result); \
47 #define TRY_GUI_REDIRECT_NO_RETURN(name, obj) \
49 Object** ngh_result; \
50 if (nrnpy_gui_helper_) { \
51 ngh_result = nrnpy_gui_helper_(name, (Object*) obj); \
58 #define TRY_GUI_REDIRECT_DOUBLE(name, obj) \
60 Object** ngh_result; \
61 if (nrnpy_gui_helper_) { \
62 ngh_result = nrnpy_gui_helper_(name, (Object*) obj); \
65 hoc_pushx(nrnpy_object_to_double_(*ngh_result)); \
71 #define TRY_GUI_REDIRECT_ACTUAL_DOUBLE(name, obj) \
73 Object** ngh_result; \
74 if (nrnpy_gui_helper_) { \
75 ngh_result = nrnpy_gui_helper_(name, (Object*) obj); \
77 return (nrnpy_object_to_double_(*ngh_result)); \
82 #define TRY_GUI_REDIRECT_ACTUAL_STR(name, obj) \
85 if (nrnpy_gui_helper_) { \
86 ngh_result = nrnpy_gui_helper3_str_(name, (Object*) obj, 0); \
88 return ((const char**) ngh_result); \
93 #define TRY_GUI_REDIRECT_ACTUAL_OBJ(name, obj) \
95 Object** ngh_result; \
96 if (nrnpy_gui_helper_) { \
97 ngh_result = nrnpy_gui_helper_(name, (Object*) obj); \
104 #define TRY_GUI_REDIRECT_DOUBLE_SEND_STRREF(name, obj) \
106 Object** ngh_result; \
107 if (nrnpy_gui_helper_) { \
108 ngh_result = nrnpy_gui_helper3_(name, (Object*) obj, 1); \
111 hoc_pushx(nrnpy_object_to_double_(*ngh_result)); \
double(* nrnpy_object_to_double_)(Object *)
Object * nrn_get_gui_redirect_obj()