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; }