/* internal API - takes one mandatory argument (object to inspect) and two optional arguments (deep and pvec - see above), positional argument matching only */ SEXP attribute_hidden do_inspect(SEXP call, SEXP op, SEXP args, SEXP env) { SEXP obj = CAR(args); int deep = -1; int pvec = 5; if (CDR(args) != R_NilValue) { deep = asInteger(CADR(args)); if (CDDR(args) != R_NilValue) pvec = asInteger(CADDR(args)); } inspect_tree(0, CAR(args), deep, pvec); return obj; }
int main(int argc, char * argv[]) { MPI_Init(&argc, &argv); g_log_set_default_handler(log_handler, NULL); g_set_print_handler(print_handler); mpiu_init(); ROOTONLY { GError * error = NULL; GOptionContext * context = g_option_context_new("paramfile"); g_option_context_add_main_entries(context, entries, NULL); if(!g_option_context_parse(context, &argc, &argv, &error)) { g_print("Option parsing failed: %s", error->message); abort(); } if(g_strv_length(paramfilename) != 1) { g_print(g_option_context_get_help(context, FALSE, NULL)); abort(); } paramfile_read(paramfilename[0]); g_message("Reading param file %s", paramfilename[0]); g_option_context_free(context); } MPI_Barrier(MPI_COMM_WORLD); common_block_sync(); MPI_Barrier(MPI_COMM_WORLD); init_gadget(); g_message("MPI Task: %d of %d, datadir=%s", ThisTask, NTask, CB.datadir); MPI_Barrier(MPI_COMM_WORLD); domain_init(); for(CB.SnapNumMajor = CB.SnapNumMajorBegin; CB.SnapNumMajor < CB.SnapNumMajorEnd; CB.SnapNumMajor ++) { SnapHeader h; snapshot_read(&h); CB.a = h.a; domain_decompose(); domain_build_tree(); for(int color=0; color < NColor; color++) { TAKETURNS { inspect_par(color); inspect_tree(color); } } ROOTONLY { inspect_domain_table(); } domain_cleanup(); } domain_destroy(); MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); return 0; }
SEXP attribute_hidden R_inspect3(SEXP x, int deep, int pvec) { inspect_tree(0, x, deep, pvec); return x; }
/* the following functions can be use internally and for debugging purposes - so far they are not used in any actual code */ SEXP attribute_hidden R_inspect(SEXP x) { inspect_tree(0, x, -1, 5); return x; }