static int compare_handles(grib_handle* h1,grib_handle* h2,blacklist* bl) { int err = 0; const char* name=NULL; grib_keys_iterator* iter = grib_keys_iterator_new(h1, GRIB_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC|GRIB_KEYS_ITERATOR_SKIP_DUPLICATES,NULL); if (!iter) { printf("ERROR: unable to get iterator begin\n"); exit(1); } while(grib_keys_iterator_next(iter)) { /* printf("--------------- %s -----------\n",iter->current->name); */ /* We can also black list with the class*/ /* grib_get_accessor_class_name' */ name=grib_keys_iterator_get_name(iter); if( !in_blacklist(name,bl) && compare_values(h1,h2,name)) err++; } grib_keys_iterator_delete(iter); return err; }
static int dump_handle(FILE* out,grib_handle* h) { grib_keys_iterator* iter = grib_keys_iterator_new(h, GRIB_KEYS_ITERATOR_SKIP_READ_ONLY|GRIB_KEYS_ITERATOR_SKIP_DUPLICATES,NULL); while(grib_keys_iterator_next(iter)) { grib_accessor* a = grib_keys_iterator_get_accessor(iter); dump_values(out,h,grib_keys_iterator_get_name(iter), a->flags & GRIB_ACCESSOR_FLAG_CAN_BE_MISSING); } grib_keys_iterator_delete(iter); return 0; }
int codes_keys_iterator_next(grib_keys_iterator *kiter) { return grib_keys_iterator_next(kiter); }