1 #ifndef sstmac_skeleton_h 2 #define sstmac_skeleton_h 4 #define SSTPP_QUOTE(name) #name 5 #define SSTPP_STR(name) SSTPP_QUOTE(name) 6 #define SST_APP_NAME_QUOTED SSTPP_STR(sstmac_app_name) 7 #define ELI_NAME(app) app##_eli 11 #if SSTMAC_INTEGRATED_SST_CORE && defined(SSTMAC_EXTERNAL_SKELETON) 13 #define sst_eli_block(app) \ 14 static PyMethodDef sst_macro_null_methods[] = { \ 15 { NULL, NULL, 0, NULL } \ 17 static inline void* gen_sst_macro_integrated_pymodule(void) \ 19 PyObject* module = Py_InitModule("sst." #app, sst_macro_null_methods); \ 23 SST::ElementLibraryInfo ELI_NAME(app) = { \ 25 "SST Macroscale skeleton app", \ 32 gen_sst_macro_integrated_pymodule \ 36 #define sst_eli_block(app) 47 using sprockit::sim_parameters;
50 #define USER_MAIN(...) \ 51 fxn_that_nobody_ever_uses_to_make_magic_happen(); \ 52 typedef int (*this_file_main_fxn)(__VA_ARGS__); \ 53 int user_skeleton_main_init_fxn(const char* name, this_file_main_fxn fxn); \ 54 static int user_skeleton_main(__VA_ARGS__); \ 55 static int dont_ignore_this = \ 56 user_skeleton_main_init_fxn(SST_APP_NAME_QUOTED, user_skeleton_main); \ 57 sst_eli_block(sstmac_app_name) \ 58 static int user_skeleton_main(__VA_ARGS__) 61 extern sprockit::sim_parameters*
63 #else //not C++, extra work required 66 #define USER_MAIN(...) \ 67 fxn_that_nobody_ever_uses_to_make_magic_happen(); \ 68 sst_eli_block(sstmac_app_name) \ 69 int sstmac_app_name(__VA_ARGS__)
int(* main_fxn)(int, char **)