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 **)