c_string_copy chpl_gmp_mpz_get_str(int base, mpz_t x) { // The number of *digits* in abs(x); size_t numDigits = mpz_sizeinbase(x, base); char* str = (char*) chpl_mem_calloc(1, numDigits + 2, CHPL_RT_MD_GLOM_STRINGS_DATA, 0, 0); mpz_get_str(str, base, x); return str; }
static void setup_main_thread_private_data(void) { thread_private_data_t* tp; tp = (thread_private_data_t*) chpl_mem_calloc(1, sizeof(thread_private_data_t), CHPL_RT_MD_THREAD_PRV_DATA, 0, 0); tp->ptask = (task_pool_p) chpl_mem_calloc(1, sizeof(task_pool_t), CHPL_RT_MD_TASK_POOL_DESC, 0, 0); tp->ptask->bundle.is_executeOn = false; tp->ptask->bundle.lineno = 0; tp->ptask->bundle.filename = CHPL_FILE_IDX_MAIN_PROGRAM; tp->ptask->bundle.requestedSubloc = c_sublocid_any_val; tp->ptask->bundle.requested_fid = FID_NONE; tp->ptask->bundle.requested_fn = NULL; tp->ptask->bundle.id = get_next_task_id(); chpl_thread_setPrivateData(tp); }
// un-macro'd CHPL_WIDEN_STRING void chpl_string_widen(chpl____wide_chpl_string* x, chpl_string from, int32_t lineno, chpl_string filename) { size_t len; x->locale = chpl_gen_getLocaleID(); if (from == NULL) { x->addr = NULL; x->size = 0; return; } len = strlen(from) + 1; x->addr = chpl_mem_calloc(len, CHPL_RT_MD_SET_WIDE_STRING, lineno, filename); strncpy((char*)x->addr, from, len); x->size = len; // This size includes the terminating NUL. }
// un-macro'd CHPL_COMM_WIDE_GET_STRING void chpl_comm_wide_get_string(chpl_string* local, struct chpl_chpl____wide_chpl_string_s* x, int32_t tid, int32_t lineno, chpl_string filename) { char* chpl_macro_tmp; if (x->addr == NULL) { *local = NULL; return; } chpl_macro_tmp = chpl_mem_calloc(x->size, CHPL_RT_MD_GET_WIDE_STRING, lineno, filename); if (chpl_nodeID == chpl_rt_nodeFromLocaleID(x->locale)) chpl_memcpy(chpl_macro_tmp, x->addr, x->size); else chpl_gen_comm_get((void*) &(*chpl_macro_tmp), chpl_rt_nodeFromLocaleID(x->locale), (void*)(x->addr), sizeof(char), tid, x->size, lineno, filename); *local = chpl_macro_tmp; }