Example #1
0
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;
}
Example #2
0
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);
}
Example #3
0
// 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.
}
Example #4
0
// 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;
}