Exemple #1
0
minteg *mk_minteg(
    double (*h)(double parameter,double constant,double x),
    double (*compute_constant)(double parameter),
    double (*xlo)(double parameter,double constant),
    double (*xhi)(double parameter,double constant),
    double parameter_lo,
    double parameter_hi,
    int integ_array_size,
    int integ_size
  )
{
  minteg *mit = AM_MALLOC(minteg);
  int i;

  mit -> integ_array_size = integ_array_size;
  mit -> integ_size = integ_size;
  mit -> h = h;
  mit -> compute_constant = compute_constant;
  mit -> xlo = xlo;
  mit -> xhi = xhi;
  mit -> parameter_lo = parameter_lo;
  mit -> parameter_hi = parameter_hi;

  mit -> integ_array = AM_MALLOC_ARRAY(integ_ptr,integ_array_size);

  for ( i = 0 ; i < integ_array_size ; i++ )
    mit -> integ_array[i] = NULL;

  return(mit);
}
string_array *mk_string_array(int size)
{
  string_array *result = AM_MALLOC(string_array);
  int i;

  result -> string_array_code = STRING_ARRAY_CODE;
  result -> size = size;
  result -> sarr_size = size;
  result -> sarr = AM_MALLOC_ARRAY(char_ptr,size);

  for ( i = 0 ; i < size ; i++ )
    result->sarr[i] = mk_copy_string("<UnDeFiNeD>");
  String_Arrays_mallocked += 1;
  return(result);
}
/* only for people who really want to save time allocating memory.
   after calling this, you should forget about the memory in string without
   freeing it.
 */
void add_to_string_array_no_copy(string_array *sa, char *string)
{
  if ( sa -> size == sa -> sarr_size )
  {
    int new_sarr_size = 2 + 2 * sa->sarr_size;
    char **new_sarr = AM_MALLOC_ARRAY(char_ptr,new_sarr_size);
    int i;

    for ( i = 0 ; i < sa->size ; i++ ) new_sarr[i] = sa->sarr[i];

    AM_FREE_ARRAY(sa->sarr,char_ptr,sa->sarr_size);
    sa -> sarr_size = new_sarr_size;
    sa -> sarr = new_sarr;
  }

  sa -> size += 1;
  sa -> sarr[sa->size-1] = string;
}