static void dump_double(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_debug *self = (grib_dumper_debug*)d; double value; size_t size = 1; int err = grib_unpack_double(a,&value,&size); int i; if( a->length == 0 && (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) return; set_begin_end(d,a); for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a)) fprintf(self->dumper.out,"%ld-%ld %s %s = MISSING",self->begin,self->theEnd,a->creator->op, a->name); else fprintf(self->dumper.out,"%ld-%ld %s %s = %g",self->begin,self->theEnd,a->creator->op, a->name,value); if(comment) fprintf(self->dumper.out," [%s]",comment); if(err) fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_double]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); }
static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_default *self = (grib_dumper_default*)d; char *value=NULL; char *p = NULL; size_t size = 0; grib_context* c=NULL; int err = grib_get_string_length(a->parent->h,a->name,&size); c=a->parent->h->context; if (size==0) return; value=(char*)grib_context_malloc_clear(c,size); if (!value) { grib_context_log(c,GRIB_LOG_FATAL,"unable to allocate %d bytes",(int)size); return; } err = grib_unpack_string(a,value,&size); p=value; if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) return; while(*p) { if(!isprint(*p)) *p = '.'; p++; } print_offset(self->dumper.out,d,a); if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# type %s \n",a->creator->op); } aliases(d,a); if(comment) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# %s \n",comment); } if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"#-READ ONLY- "); } else fprintf(self->dumper.out," "); if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) ) fprintf(self->dumper.out,"%s = MISSING;",a->name); else fprintf(self->dumper.out,"%s = %s;",a->name,value); if(err) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_string]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); grib_context_free(c,value); }
static void dump_bits(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_default *self = (grib_dumper_default*)d; int i; long value; size_t size = 1; int err = grib_unpack_long(a,&value,&size); if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) return; print_offset(self->dumper.out,d,a); if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# type %s \n",a->creator->op); } aliases(d,a); if(comment) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# %s \n",comment); } fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# flags: "); for(i=0;i<(a->length*8);i++) { if(test_bit(value,a->length*8-i-1)) fprintf(self->dumper.out,"1"); else fprintf(self->dumper.out,"0"); } fprintf(self->dumper.out,"\n"); if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"#-READ ONLY- "); } else fprintf(self->dumper.out," "); if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) ) fprintf(self->dumper.out,"%s = MISSING;",a->name); else fprintf(self->dumper.out,"%s = %ld;",a->name,value); if(err) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_bits]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); }
static void dump_string(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_debug *self = (grib_dumper_debug*)d; int err=0; int i; size_t size=0; char *value=NULL; char *p=NULL ; err = grib_get_string_length(a->parent->h, a->name, &size); if ( (size < 2) && grib_is_missing_internal(a) ) { /* GRIB-302: transients and missing keys. Need to re-adjust the size */ size = 10; /* big enough to hold the string "missing" */ } value=(char*)grib_context_malloc_clear(a->parent->h->context,size); if (!value) return; err=grib_unpack_string(a,value,&size); if(err) strcpy(value,"<error>"); p=value; if( a->length == 0 && (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) return; set_begin_end(d,a); while(*p) { if(!isprint(*p)) *p = '.'; p++; } for(i = 0; i < d->depth ; i++) fprintf(self->dumper.out," "); fprintf(self->dumper.out,"%ld-%ld %s %s = %s",self->begin,self->theEnd,a->creator->op, a->name,value); if(comment) fprintf(self->dumper.out," [%s]",comment); if(err) fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_debug::dump_string]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); if (value) grib_context_free(a->parent->h->context,value); }
static int is_missing(grib_accessor* a){ grib_accessor_scale* self = (grib_accessor_scale*)a; grib_accessor* av=grib_find_accessor(a->parent->h,self->value); if (!av) return GRIB_NOT_FOUND; return grib_is_missing_internal(av); #if 0 int ret=0; long value=0; if((ret = grib_get_long_internal(a->parent->h,self->value, &value) ) != GRIB_SUCCESS){ grib_context_log(a->parent->h->context, GRIB_LOG_ERROR, "Accessor %s cannont gather value for %s error %d \n", a->name, self->value, ret); return 0; } return (value == GRIB_MISSING_LONG); #endif }
static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_default *self = (grib_dumper_default*)d; long value; size_t size = 1; long *values=NULL; int err = 0; int i; long count=0; grib_value_count(a,&count); size=count; if ( (a->flags & GRIB_ACCESSOR_FLAG_DUMP) == 0) return; print_offset(self->dumper.out,d,a); if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0){ fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# type %s \n",a->creator->op); } if (size>1) { values=(long *)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size); err=grib_unpack_long(a,values,&size); } else { err=grib_unpack_long(a,&value,&size); } aliases(d,a); if(comment) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# %s \n",comment); } if (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"#-READ ONLY- "); } else fprintf(self->dumper.out," "); if (size>1) { int cols=19; int count=0; fprintf(self->dumper.out,"%s = { \t",a->name); for (i=0;i<size;i++) { if (count>cols) {fprintf(self->dumper.out,"\n\t\t\t\t");count=0;} fprintf(self->dumper.out,"%ld ",values[i]); count++; } fprintf(self->dumper.out,"}\n"); grib_context_free(a->parent->h->context,values); } else { if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) ) fprintf(self->dumper.out,"%s = MISSING;",a->name); else fprintf(self->dumper.out,"%s = %ld;",a->name,value); } if(err) { fprintf(self->dumper.out," "); fprintf(self->dumper.out,"# *** ERR=%d (%s) [grib_dumper_default::dump_long]",err,grib_get_error_message(err)); } fprintf(self->dumper.out,"\n"); }
static void dump_long(grib_dumper* d,grib_accessor* a,const char* comment) { grib_dumper_wmo *self = (grib_dumper_wmo*)d; long value = 0; size_t size =0; long *values=NULL; int err = 0; int i=0; long count=0; grib_value_count(a,&count); size=count; if (size>1) { values=(long*)grib_context_malloc_clear(a->parent->h->context,sizeof(long)*size); err=grib_unpack_long(a,values,&size); } else { err=grib_unpack_long(a,&value,&size); } if( a->length == 0 && (d->option_flags & GRIB_DUMP_FLAG_CODED) != 0) return; if( (a->flags & GRIB_ACCESSOR_FLAG_READ_ONLY) != 0 && (d->option_flags & GRIB_DUMP_FLAG_READ_ONLY) == 0) return; set_begin_end(d,a); print_offset(self->dumper.out,self->begin,self->theEnd); if ((d->option_flags & GRIB_DUMP_FLAG_TYPE) != 0) fprintf(self->dumper.out,"%s ",a->creator->op); if (size>1) { int cols=19; int count=0; fprintf(self->dumper.out,"%s = { \t",a->name); for (i=0;i<size;i++) { if (count>cols) {fprintf(self->dumper.out,"\n\t\t\t\t");count=0;} fprintf(self->dumper.out,"%ld ",values[i]); count++; } fprintf(self->dumper.out,"}\n"); grib_context_free(a->parent->h->context,values); } else { if( ((a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING) != 0) && grib_is_missing_internal(a) ) fprintf(self->dumper.out,"%s = MISSING",a->name); else fprintf(self->dumper.out,"%s = %ld",a->name,value); print_hexadecimal(self->dumper.out,d->option_flags,a); if(comment) fprintf(self->dumper.out," [%s]",comment); } if(err) fprintf(self->dumper.out," *** ERR=%d (%s) [grib_dumper_wmo::dump_long]",err,grib_get_error_message(err)); aliases(d,a); fprintf(self->dumper.out,"\n"); }