Example #1
0
static int grib_fieldset_columns_resize(grib_fieldset* set,size_t newsize) {
  double* newdoubles;
  long* newlongs;
  char** newstrings;
  int* newerrors;
  int i=0;
  grib_context* c;

  if (!set || !set->columns) return GRIB_INVALID_ARGUMENT;

  c=set->context;

  if (newsize <= set->columns[0].values_array_size) return 0;

  for (i=0;i<set->columns_size;i++) {

    switch (set->columns[i].type) {
      case GRIB_TYPE_LONG:
        newlongs=(long*)grib_context_realloc(c,set->columns[i].long_values,
              newsize*sizeof(long));
        if (!newlongs ) {
          grib_context_log(c, GRIB_LOG_ERROR,
              "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
          return GRIB_OUT_OF_MEMORY;
        } else set->columns[i].long_values=newlongs;
        break;
      case GRIB_TYPE_DOUBLE:
        newdoubles=(double*)grib_context_realloc(c,set->columns[i].double_values,
             newsize*sizeof(double));
        if (!newdoubles) {
          grib_context_log(c, GRIB_LOG_ERROR,
              "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
          return GRIB_OUT_OF_MEMORY;
        } else set->columns[i].double_values=newdoubles;
        break;
      case GRIB_TYPE_STRING:
        newstrings=(char**)grib_context_realloc(c,set->columns[i].string_values,
              newsize*sizeof(char*));
        if (!newstrings) {
          grib_context_log(c, GRIB_LOG_ERROR,
              "grib_fieldset_columns_resize : Cannot malloc %d bytes",newsize-set->columns[i].values_array_size);
          return GRIB_OUT_OF_MEMORY;
        } else set->columns[i].string_values=newstrings;
        break;
    }
    newerrors=(int*)grib_context_realloc(c,set->columns[i].errors,newsize*sizeof(int));
    if (!newerrors) {
      grib_context_log(c, GRIB_LOG_ERROR,
          "grib_fieldset_columns_resize : Cannot malloc %d bytes",
          set->columns[i].errors,newsize*sizeof(int));
      return GRIB_OUT_OF_MEMORY;
    } else set->columns[i].errors=newerrors;

    set->columns[i].values_array_size=newsize;

  }

  return GRIB_SUCCESS;
}
Example #2
0
grib_darray* grib_darray_resize(grib_context* c,grib_darray* v) {
  int newsize=v->incsize+v->size;

  if (!c) c=grib_context_get_default();

  v->v=grib_context_realloc(c,v->v,newsize*sizeof(double));
  v->size=newsize;
  if (!v->v) {
    grib_context_log(c,GRIB_LOG_ERROR,
          "grib_darray_resize unable to allocate %d bytes\n",sizeof(double)*newsize);
    return NULL;
  }
  return v;
}