1 
2 /* action.c */
3 void grib_dump(grib_action* a, FILE* f, int l);
4 void grib_xref(grib_action* a, FILE* f, const char* path);
5 void grib_action_delete(grib_context* context, grib_action* a);
6 int grib_create_accessor(grib_section* p, grib_action* a, grib_loader* h);
7 int grib_action_notify_change(grib_action* a, grib_accessor* observer, grib_accessor* observed);
8 grib_action* grib_action_reparse(grib_action* a, grib_accessor* acc, int* doit);
9 int grib_action_execute(grib_action* a, grib_handle* h);
10 void grib_dump_action_branch(FILE* out, grib_action* a, int decay);
11 void grib_dump_action_tree(grib_context* ctx, FILE* out);
12 void grib_xref_action_branch(FILE* out, grib_action* a, const char* path);
13 
14 /* action_class_alias.c */
15 grib_action* grib_action_create_alias(grib_context* context, const char* name, const char* arg1, const char* name_space, int flags);
16 
17 /* action_class_gen.c */
18 grib_action* grib_action_create_gen(grib_context* context, const char* name, const char* op, const long len, grib_arguments* params, grib_arguments* default_value, int flags, const char* name_space, const char* set);
19 
20 /* action_class_if.c */
21 grib_action* grib_action_create_if(grib_context* context, grib_expression* expression, grib_action* block_true, grib_action* block_false, int transient, int lineno, char* file_being_parsed);
22 
23 /* action_class_switch.c */
24 grib_action* grib_action_create_switch(grib_context* context, grib_arguments* args, grib_case* Case, grib_action* Default);
25 grib_case* grib_case_new(grib_context* c, grib_arguments* values, grib_action* action);
26 
27 /* grib_accessor_class_g1fcperiod.c */
28 
29 /* grib_accessor_class_g1end_of_interval_monthly.c */
30 
31 /* grib_accessor_class_mars_param.c */
32 
33 /* action_class_section.c */
34 
35 /* action_class_list.c */
36 grib_action* grib_action_create_list(grib_context* context, const char* name, grib_expression* expression, grib_action* block);
37 
38 /* action_class_while.c */
39 grib_action* grib_action_create_while(grib_context* context, grib_expression* expression, grib_action* block);
40 
41 /* action_class_put.c */
42 grib_action* grib_action_create_put(grib_context* context, const char* name, grib_arguments* args);
43 
44 /* action_class_meta.c */
45 grib_action* grib_action_create_meta(grib_context* context, const char* name, const char* op, grib_arguments* params, grib_arguments* default_value, unsigned long flags, const char* name_space);
46 
47 /* action_class_remove.c */
48 grib_action* grib_action_create_remove(grib_context* context, grib_arguments* args);
49 
50 /* action_class_rename.c */
51 grib_action* grib_action_create_rename(grib_context* context, char* the_old, char* the_new);
52 
53 /* action_class_assert.c */
54 grib_action* grib_action_create_assert(grib_context* context, grib_expression* expression);
55 
56 /* action_class_template.c */
57 grib_action* grib_action_create_template(grib_context* context, int nofail, const char* name, const char* arg1);
58 grib_action* get_empty_template(grib_context* c, int* err);
59 
60 /* action_class_trigger.c */
61 grib_action* grib_action_create_trigger(grib_context* context, grib_arguments* args, grib_action* block);
62 
63 /* action_class_when.c */
64 grib_action* grib_action_create_when(grib_context* context, grib_expression* expression, grib_action* block_true, grib_action* block_false);
65 
66 /* action_class_concept.c */
67 grib_concept_value* action_concept_get_concept(grib_accessor* a);
68 int action_concept_get_nofail(grib_accessor* a);
69 grib_action* grib_action_create_concept(grib_context* context, const char* name, grib_concept_value* concept, const char* basename, const char* name_space, const char* defaultkey, const char* masterDir, const char* localDir, const char* ecmfDir, int flags, int nofail);
70 int get_concept_condition_string(grib_handle* h, const char* key, const char* value, char* result);
71 
72 /* action_class_hash_array.c */
73 grib_action* grib_action_create_hash_array(grib_context* context, const char* name, grib_hash_array_value* hash_array, const char* basename, const char* name_space, const char* defaultkey, const char* masterDir, const char* localDir, const char* ecmfDir, int flags, int nofail);
74 grib_hash_array_value* get_hash_array(grib_handle* h, grib_action* a);
75 
76 /* action_class_set.c */
77 grib_action* grib_action_create_set(grib_context* context, const char* name, grib_expression* expression, int nofail);
78 
79 /* action_class_set_darray.c */
80 grib_action* grib_action_create_set_darray(grib_context* context, const char* name, grib_darray* darray);
81 
82 /* action_class_set_iarray.c */
83 grib_action* grib_action_create_set_iarray(grib_context* context, const char* name, grib_iarray* iarray);
84 
85 /* action_class_set_sarray.c */
86 grib_action* grib_action_create_set_sarray(grib_context* context, const char* name, grib_sarray* sarray);
87 
88 /* action_class_noop.c */
89 grib_action* grib_action_create_noop(grib_context* context, const char* fname);
90 
91 /* action_class_write.c */
92 grib_action* grib_action_create_write(grib_context* context, const char* name, int append, int padtomultiple);
93 
94 /* action_class_print.c */
95 grib_action* grib_action_create_print(grib_context* context, const char* name, char* outname);
96 
97 /* action_class_close.c */
98 grib_action* grib_action_create_close(grib_context* context, char* filename);
99 
100 /* action_class_variable.c */
101 grib_action* grib_action_create_variable(grib_context* context, const char* name, const char* op, const long len, grib_arguments* params, grib_arguments* default_value, int flags, const char* name_space);
102 
103 /* action_class_modify.c */
104 grib_action* grib_action_create_modify(grib_context* context, const char* name, long flags);
105 
106 /* action_class_transient_darray.c */
107 grib_action* grib_action_create_transient_darray(grib_context* context, const char* name, grib_darray* darray, int flags);
108 
109 /* grib_accessor.c */
110 void grib_accessor_dump(grib_accessor* a, grib_dumper* f);
111 int grib_pack_missing(grib_accessor* a);
112 int grib_pack_zero(grib_accessor* a);
113 int grib_is_missing_internal(grib_accessor* a);
114 int grib_pack_double(grib_accessor* a, const double* v, size_t* len);
115 int grib_pack_expression(grib_accessor* a, grib_expression* e);
116 int grib_pack_string(grib_accessor* a, const char* v, size_t* len);
117 int grib_pack_string_array(grib_accessor* a, const char** v, size_t* len);
118 int grib_pack_long(grib_accessor* a, const long* v, size_t* len);
119 int grib_pack_bytes(grib_accessor* a, const unsigned char* v, size_t* len);
120 int grib_unpack_bytes(grib_accessor* a, unsigned char* v, size_t* len);
121 int grib_unpack_double_subarray(grib_accessor* a, double* v, size_t start, size_t len);
122 int grib_unpack_double(grib_accessor* a, double* v, size_t* len);
123 int grib_unpack_double_element(grib_accessor* a, size_t i, double* v);
124 int grib_unpack_string(grib_accessor* a, char* v, size_t* len);
125 int grib_unpack_string_array(grib_accessor* a, char** v, size_t* len);
126 int grib_accessors_list_unpack_long(grib_accessors_list* al, long* val, size_t* buffer_len);
127 int grib_accessors_list_unpack_double(grib_accessors_list* al, double* val, size_t* buffer_len);
128 int grib_accessors_list_unpack_string(grib_accessors_list* al, char** val, size_t* buffer_len);
129 int grib_unpack_long(grib_accessor* a, long* v, size_t* len);
130 long grib_accessor_get_native_type(grib_accessor* a);
131 long grib_get_next_position_offset(grib_accessor* a);
132 long grib_string_length(grib_accessor* a);
133 long grib_byte_offset(grib_accessor* a);
134 long grib_byte_count(grib_accessor* a);
135 int grib_value_count(grib_accessor* a, long* count);
136 int grib_accessors_list_value_count(grib_accessors_list* al, size_t* count);
137 int grib_accessor_notify_change(grib_accessor* a, grib_accessor* changed);
138 void grib_init_accessor(grib_accessor* a, const long len, grib_arguments* args);
139 void grib_accessor_delete(grib_context* ct, grib_accessor* a);
140 grib_accessor* grib_accessor_clone(grib_accessor* a, grib_section* s, int* err);
141 void grib_update_size(grib_accessor* a, size_t len);
142 int grib_nearest_smaller_value(grib_accessor* a, double val, double* nearest);
143 size_t grib_preferred_size(grib_accessor* a, int from_handle);
144 grib_accessor* grib_next_accessor(grib_accessor* a);
145 void grib_resize(grib_accessor* a, size_t new_size);
146 int grib_compare_accessors(grib_accessor* a1, grib_accessor* a2, int compare_flags);
147 const char* grib_get_type_name(int type);
148 int grib_accessor_add_attribute(grib_accessor* a, grib_accessor* attr, int nest_if_clash);
149 int grib_accessor_replace_attribute(grib_accessor* a, grib_accessor* attr);
150 int grib_accessor_delete_attribute(grib_accessor* a, const char* name);
151 grib_accessor* grib_accessor_get_attribute_by_index(grib_accessor* a, int index);
152 const char* grib_accessor_get_name(grib_accessor* a);
153 grib_accessor* _grib_accessor_get_attribute(grib_accessor* a, const char* name, int* index);
154 int grib_accessor_has_attributes(grib_accessor* a);
155 grib_accessor* grib_accessor_get_attribute(grib_accessor* a, const char* name);
156 grib_accessors_list* grib_accessors_list_create(grib_context* c);
157 void grib_accessors_list_push(grib_accessors_list* al, grib_accessor* a, int rank);
158 grib_accessors_list* grib_accessors_list_last(grib_accessors_list* al);
159 grib_accessors_list* grib_accessors_list_find(grib_accessors_list* al, grib_accessor* a);
160 void grib_accessors_list_delete(grib_context* c, grib_accessors_list* al);
161 
162 /* grib_concept.c */
163 grib_concept_value* grib_concept_value_new(grib_context* c, const char* name, grib_concept_condition* conditions);
164 void grib_concept_value_delete(grib_context* c, grib_concept_value* v);
165 grib_concept_condition* grib_concept_condition_new(grib_context* c, const char* name, grib_expression* expression, grib_iarray* iarray);
166 void grib_concept_condition_delete(grib_context* c, grib_concept_condition* v);
167 
168 /* grib_hash_array.c */
169 grib_hash_array_value* grib_integer_hash_array_value_new(grib_context* c, const char* name, grib_iarray* array);
170 grib_hash_array_value* grib_double_hash_array_value_new(grib_context* c, const char* name, grib_darray* array);
171 void grib_hash_array_value_delete(grib_context* c, grib_hash_array_value* v);
172 
173 /* grib_bufr_descriptor.c */
174 bufr_descriptor* grib_bufr_descriptor_new(grib_accessor* tables_accessor, int code, int* err);
175 bufr_descriptor* grib_bufr_descriptor_clone(bufr_descriptor* d);
176 int grib_bufr_descriptor_set_code(grib_accessor* tables_accessor, int code, bufr_descriptor* v);
177 void grib_bufr_descriptor_set_reference(bufr_descriptor* v, long reference);
178 void grib_bufr_descriptor_set_width(bufr_descriptor* v, long width);
179 void grib_bufr_descriptor_set_scale(bufr_descriptor* v, long scale);
180 int grib_bufr_descriptor_can_be_missing(bufr_descriptor* v);
181 void grib_bufr_descriptor_delete(bufr_descriptor* v);
182 
183 /* grib_bufr_descriptors_array.c */
184 bufr_descriptors_array* grib_bufr_descriptors_array_new(grib_context* c, size_t size, size_t incsize);
185 bufr_descriptor* grib_bufr_descriptors_array_pop(bufr_descriptors_array* a);
186 bufr_descriptor* grib_bufr_descriptors_array_pop_front(bufr_descriptors_array* a);
187 bufr_descriptors_array* grib_bufr_descriptors_array_push(bufr_descriptors_array* v, bufr_descriptor* val);
188 bufr_descriptors_array* grib_bufr_descriptors_array_append(bufr_descriptors_array* v, bufr_descriptors_array* ar);
189 bufr_descriptors_array* grib_bufr_descriptors_array_push_front(bufr_descriptors_array* v, bufr_descriptor* val);
190 bufr_descriptor* grib_bufr_descriptors_array_get(bufr_descriptors_array* a, size_t i);
191 void grib_bufr_descriptors_array_set(bufr_descriptors_array* a, size_t i, bufr_descriptor* v);
192 void grib_bufr_descriptors_array_delete(bufr_descriptors_array* v);
193 void grib_bufr_descriptors_array_delete_array(bufr_descriptors_array* v);
194 bufr_descriptor** grib_bufr_descriptors_array_get_array(bufr_descriptors_array* v);
195 size_t grib_bufr_descriptors_array_used_size(bufr_descriptors_array* v);
196 
197 /* grib_darray.c */
198 void grib_darray_print(const char* title, const grib_darray* darray);
199 grib_darray* grib_darray_new_from_array(grib_context* c, double* a, size_t size);
200 grib_darray* grib_darray_new(grib_context* c, size_t size, size_t incsize);
201 grib_darray* grib_darray_push(grib_context* c, grib_darray* v, double val);
202 void grib_darray_delete(grib_context* c, grib_darray* v);
203 double* grib_darray_get_array(grib_context* c, grib_darray* v);
204 int grib_darray_is_constant(grib_darray* v, double epsilon);
205 size_t grib_darray_used_size(grib_darray* v);
206 
207 /* grib_sarray.c */
208 grib_sarray* grib_sarray_new(grib_context* c, size_t size, size_t incsize);
209 grib_sarray* grib_sarray_push(grib_context* c, grib_sarray* v, char* val);
210 void grib_sarray_delete(grib_context* c, grib_sarray* v);
211 void grib_sarray_delete_content(grib_context* c, grib_sarray* v);
212 char** grib_sarray_get_array(grib_context* c, grib_sarray* v);
213 size_t grib_sarray_used_size(grib_sarray* v);
214 
215 /* grib_oarray.c */
216 grib_oarray* grib_oarray_new(grib_context* c, size_t size, size_t incsize);
217 grib_oarray* grib_oarray_push(grib_context* c, grib_oarray* v, void* val);
218 void grib_oarray_delete(grib_context* c, grib_oarray* v);
219 void grib_oarray_delete_content(grib_context* c, grib_oarray* v);
220 void** grib_oarray_get_array(grib_context* c, grib_oarray* v);
221 void* grib_oarray_get(grib_oarray* v, int i);
222 size_t grib_oarray_used_size(grib_oarray* v);
223 
224 /* grib_iarray.c */
225 void grib_iarray_print(const char* title, const grib_iarray* iarray);
226 grib_iarray* grib_iarray_new_from_array(grib_context* c, long* a, size_t size);
227 grib_iarray* grib_iarray_new(grib_context* c, size_t size, size_t incsize);
228 long grib_iarray_pop(grib_iarray* a);
229 long grib_iarray_pop_front(grib_iarray* a);
230 grib_iarray* grib_iarray_push(grib_iarray* v, long val);
231 grib_iarray* grib_iarray_push_front(grib_iarray* v, long val);
232 grib_iarray* grib_iarray_push_array(grib_iarray* v, long* val, size_t size);
233 void grib_iarray_delete(grib_iarray* v);
234 void grib_iarray_delete_array(grib_iarray* v);
235 long* grib_iarray_get_array(grib_iarray* v);
236 size_t grib_iarray_used_size(grib_iarray* v);
237 
238 /* grib_vdarray.c */
239 void grib_vdarray_print(const char* title, const grib_vdarray* vdarray);
240 grib_vdarray* grib_vdarray_new(grib_context* c, size_t size, size_t incsize);
241 grib_vdarray* grib_vdarray_push(grib_context* c, grib_vdarray* v, grib_darray* val);
242 void grib_vdarray_delete(grib_context* c, grib_vdarray* v);
243 void grib_vdarray_delete_content(grib_context* c, grib_vdarray* v);
244 grib_darray** grib_vdarray_get_array(grib_context* c, grib_vdarray* v);
245 size_t grib_vdarray_used_size(grib_vdarray* v);
246 
247 /* grib_vsarray.c */
248 grib_vsarray* grib_vsarray_new(grib_context* c, size_t size, size_t incsize);
249 grib_vsarray* grib_vsarray_push(grib_context* c, grib_vsarray* v, grib_sarray* val);
250 void grib_vsarray_delete(grib_context* c, grib_vsarray* v);
251 void grib_vsarray_delete_content(grib_context* c, grib_vsarray* v);
252 grib_sarray** grib_vsarray_get_array(grib_context* c, grib_vsarray* v);
253 size_t grib_vsarray_used_size(grib_vsarray* v);
254 
255 /* grib_viarray.c */
256 grib_viarray* grib_viarray_new(grib_context* c, size_t size, size_t incsize);
257 grib_viarray* grib_viarray_push(grib_context* c, grib_viarray* v, grib_iarray* val);
258 void grib_viarray_delete(grib_context* c, grib_viarray* v);
259 void grib_viarray_delete_content(grib_context* c, grib_viarray* v);
260 grib_iarray** grib_viarray_get_array(grib_context* c, grib_viarray* v);
261 size_t grib_viarray_used_size(grib_viarray* v);
262 
263 /* grib_accessor_class_array.c */
264 
265 /* grib_accessor_class_assert.c */
266 
267 /* grib_accessor_class_ascii.c */
268 
269 /* grib_accessor_class_bit.c */
270 
271 /* grib_accessor_class_bitmap.c */
272 
273 /* grib_accessor_class_bits.c */
274 
275 /* grib_accessor_class_bits_per_value.c */
276 
277 /* grib_accessor_class_bufr_clear_tables.c */
278 
279 /* grib_accessor_class_bufr_data_array.c */
280 grib_vsarray* accessor_bufr_data_array_get_stringValues(grib_accessor* a);
281 grib_accessors_list* accessor_bufr_data_array_get_dataAccessors(grib_accessor* a);
282 grib_trie_with_rank* accessor_bufr_data_array_get_dataAccessorsTrie(grib_accessor* a);
283 void accessor_bufr_data_array_set_unpackMode(grib_accessor* a, int unpackMode);
284 
285 /* grib_accessor_class_bufr_data_element.c */
286 void accessor_bufr_data_element_set_index(grib_accessor* a, long index);
287 void accessor_bufr_data_element_set_type(grib_accessor* a, int type);
288 void accessor_bufr_data_element_set_numberOfSubsets(grib_accessor* a, long numberOfSubsets);
289 void accessor_bufr_data_element_set_subsetNumber(grib_accessor* a, long subsetNumber);
290 void accessor_bufr_data_element_set_compressedData(grib_accessor* a, int compressedData);
291 void accessor_bufr_data_element_set_descriptors(grib_accessor* a, bufr_descriptors_array* descriptors);
292 void accessor_bufr_data_element_set_numericValues(grib_accessor* a, grib_vdarray* numericValues);
293 void accessor_bufr_data_element_set_stringValues(grib_accessor* a, grib_vsarray* stringValues);
294 void accessor_bufr_data_element_set_elementsDescriptorsIndex(grib_accessor* a, grib_viarray* elementsDescriptorsIndex);
295 
296 /* grib_accessor_class_bufr_elements_table.c */
297 int bufr_descriptor_is_marker(bufr_descriptor* d);
298 bufr_descriptor* accessor_bufr_elements_table_get_descriptor(grib_accessor* a, int code, int* err);
299 
300 /* grib_accessor_class_bufr_group.c */
301 
302 /* grib_accessor_class_bufr_string_values.c */
303 
304 /* grib_accessor_class_pack_bufr_values.c */
305 
306 /* grib_accessor_class_bufr_extract_area_subsets.c */
307 
308 /* grib_accessor_class_bufr_extract_datetime_subsets.c */
309 
310 /* grib_accessor_class_group.c */
311 
312 /* grib_accessor_class_unpack_bufr_values.c */
313 
314 /* grib_accessor_class_bufr_has_delayed_replication.c */
315 
316 /* grib_accessor_class_apply_operators.c */
317 size_t compute_size_AO(long* descriptors, size_t numberOfDescriptors);
318 
319 /* grib_accessor_class_non_alpha.c */
320 
321 /* grib_accessor_class_g1bitmap.c */
322 
323 /* grib_accessor_class_g2bitmap.c */
324 
325 /* grib_accessor_class_concept.c */
326 
327 /* grib_accessor_class_hash_array.c */
328 
329 /* grib_accessor_class_decimal_precision.c */
330 
331 /* grib_accessor_class_divdouble.c */
332 
333 /* grib_accessor_class_budgdate.c */
334 
335 /* grib_accessor_class_validity_date.c */
336 
337 /* grib_accessor_class_validity_time.c */
338 
339 /* grib_accessor_class_bytes.c */
340 
341 /* grib_accessor_class.c */
342 grib_section* grib_create_root_section(const grib_context* context, grib_handle* h);
343 grib_accessor* grib_accessor_factory(grib_section* p, grib_action* creator, const long len, grib_arguments* params);
344 void grib_push_accessor(grib_accessor* a, grib_block_of_accessors* l);
345 void grib_section_post_init(grib_section* s);
346 int grib_section_adjust_sizes(grib_section* s, int update, int depth);
347 int grib_get_block_length(grib_section* s, size_t* l);
348 grib_accessor* find_paddings(grib_section* s);
349 void grib_update_paddings(grib_section* s);
350 
351 /* grib_accessor_class_change_scanning_direction.c */
352 
353 /* grib_accessor_class_check_internal_version.c */
354 
355 /* grib_accessor_class_codeflag.c */
356 
357 /* grib_accessor_class_smart_table.c */
358 void grib_smart_table_delete(grib_context* c);
359 
360 /* grib_accessor_class_smart_table_column.c */
361 
362 /* grib_accessor_class_codetable.c */
363 void grib_codetable_delete(grib_context* c);
364 
365 /* grib_accessor_class_codetable_units.c */
366 
367 /* grib_accessor_class_codetable_title.c */
368 
369 /* grib_accessor_class_count_file.c */
370 
371 /* grib_accessor_class_count_total.c */
372 
373 /* grib_accessor_class_double.c */
374 
375 /* grib_accessor_class_element.c */
376 
377 /* grib_accessor_class_evaluate.c */
378 
379 /* grib_accessor_class_g1area.c */
380 
381 /* grib_accessor_class_g1date.c */
382 
383 /* grib_accessor_class_g1monthlydate.c */
384 
385 /* grib_accessor_class_library_version.c */
386 
387 /* grib_accessor_class_when.c */
388 
389 /* grib_accessor_class_g1verificationdate.c */
390 
391 /* grib_accessor_class_g1day_of_the_year_date.c */
392 
393 /* grib_accessor_class_g1_half_byte_codeflag.c */
394 
395 /* grib_accessor_class_g1forecastmonth.c */
396 
397 /* grib_accessor_class_g1step_range.c */
398 int grib_g1_step_get_steps(grib_accessor* a, long* start, long* theEnd);
399 int grib_g1_step_apply_units(long* start, long* theEnd, long* step_unit, long* P1, long* P2, long* unit, const int max, const int instant);
400 
401 /* grib_accessor_class_g2step_range.c */
402 
403 /* grib_accessor_class_data_g22order_packing.c */
404 
405 /* grib_accessor_class_mars_step.c */
406 
407 /* grib_accessor_class_message_copy.c */
408 
409 /* grib_accessor_class_dictionary.c */
410 
411 /* grib_accessor_class_g1param.c */
412 
413 /* grib_accessor_class_g1p1p2.c */
414 
415 /* grib_accessor_class_g1_increment.c */
416 
417 /* grib_accessor_class_latlon_increment.c */
418 
419 /* grib_accessor_class_g2date.c */
420 
421 /* grib_accessor_class_g2level.c */
422 
423 /* grib_accessor_class_g2step.c */
424 
425 /* grib_accessor_class_g2end_step.c */
426 
427 /* grib_accessor_class_g2latlon.c */
428 
429 /* grib_accessor_class_g2lon.c */
430 
431 /* grib_accessor_class_global_gaussian.c */
432 
433 /* grib_accessor_class_gaussian_grid_name.c */
434 
435 /* grib_accessor_class_gen.c */
436 
437 /* grib_accessor_class_gts_header.c */
438 
439 /* grib_accessor_class_ifs_param.c */
440 
441 /* grib_accessor_class_int16.c */
442 
443 /* grib_accessor_class_int16_little_endian.c */
444 
445 /* grib_accessor_class_int32.c */
446 
447 /* grib_accessor_class_int32_little_endian.c */
448 
449 /* grib_accessor_class_int64.c */
450 
451 /* grib_accessor_class_int64_little_endian.c */
452 
453 /* grib_accessor_class_int8.c */
454 
455 /* grib_accessor_class_uint16.c */
456 
457 /* grib_accessor_class_uint16_little_endian.c */
458 
459 /* grib_accessor_class_uint32.c */
460 
461 /* grib_accessor_class_uint32_little_endian.c */
462 
463 /* grib_accessor_class_uint64.c */
464 
465 /* grib_accessor_class_uint64_little_endian.c */
466 
467 /* grib_accessor_class_uint8.c */
468 
469 /* grib_accessor_class_blob.c */
470 
471 /* grib_accessor_class_julian_day.c */
472 
473 /* grib_accessor_class_julian_date.c */
474 
475 /* grib_accessor_class_latlonvalues.c */
476 
477 /* grib_accessor_class_latitudes.c */
478 
479 /* grib_accessor_class_longitudes.c */
480 
481 /* grib_accessor_class_missing.c */
482 
483 /* grib_accessor_class_octahedral_gaussian.c */
484 
485 /* grib_accessor_class_offset_file.c */
486 
487 /* grib_accessor_class_scale.c */
488 
489 /* grib_accessor_class_rdbtime_guess_date.c */
490 
491 /* grib_accessor_class_from_scale_factor_scaled_value.c */
492 
493 /* grib_accessor_class_times.c */
494 
495 /* grib_accessor_class_forward.c */
496 
497 /* grib_accessor_class_g2bitmap_present.c */
498 
499 /* grib_accessor_class_ibmfloat.c */
500 
501 /* grib_accessor_class_ieeefloat.c */
502 
503 /* grib_accessor_class_constant.c */
504 void accessor_constant_set_type(grib_accessor* a, int type);
505 void accessor_constant_set_dval(grib_accessor* a, double dval);
506 
507 /* grib_accessor_class_iterator.c */
508 grib_iterator* grib_iterator_new(const grib_handle* h, unsigned long flags, int* error);
509 
510 /* grib_accessor_class_message.c */
511 
512 /* grib_accessor_class_nearest.c */
513 grib_nearest* grib_nearest_new(const grib_handle* h, int* error);
514 
515 /* grib_accessor_class_box.c */
516 grib_box* grib_box_new(grib_handle* h, int* error);
517 
518 /* grib_accessor_class_ksec1expver.c */
519 
520 /* grib_accessor_class_laplacian.c */
521 
522 /* grib_accessor_class_label.c */
523 
524 /* grib_accessor_class_long.c */
525 
526 /* grib_accessor_class_lookup.c */
527 
528 /* grib_accessor_class_octect_number.c */
529 
530 /* grib_accessor_class_headers_only.c */
531 
532 /* grib_accessor_class_padding.c */
533 
534 /* grib_accessor_class_pad.c */
535 
536 /* grib_accessor_class_padto.c */
537 
538 /* grib_accessor_class_padtoeven.c */
539 
540 /* grib_accessor_class_padtomultiple.c */
541 
542 /* grib_accessor_class_section_padding.c */
543 
544 /* grib_accessor_class_section_pointer.c */
545 
546 /* grib_accessor_class_position.c */
547 
548 /* grib_accessor_class_signed.c */
549 
550 /* grib_accessor_class_signed_bits.c */
551 
552 /* grib_accessor_class_section.c */
553 
554 /* grib_accessor_class_step_in_units.c */
555 
556 /* grib_accessor_class_section_length.c */
557 
558 /* grib_accessor_class_g1_message_length.c */
559 int grib_get_g1_message_size(grib_handle* h, grib_accessor* tl, grib_accessor* s4, long* total_length, long* sec4_len);
560 
561 /* grib_accessor_class_g1_section4_length.c */
562 
563 /* grib_accessor_class_size.c */
564 
565 /* grib_accessor_class_scale_values.c */
566 
567 /* grib_accessor_class_offset_values.c */
568 
569 /* grib_accessor_class_sprintf.c */
570 
571 /* grib_accessor_class_getenv.c */
572 
573 /* grib_accessor_class_round.c */
574 
575 /* grib_accessor_class_spectral_truncation.c */
576 
577 /* grib_accessor_class_time.c */
578 
579 /* grib_accessor_class_transient.c */
580 
581 /* grib_accessor_class_values.c */
582 
583 /* grib_accessor_class_simple_packing_error.c */
584 
585 /* grib_accessor_class_data_simple_packing.c */
586 
587 /* grib_accessor_class_data_ccsds_packing.c */
588 
589 /* grib_accessor_class_count_missing.c */
590 
591 /* grib_accessor_class_data_sh_packed.c */
592 
593 /* grib_accessor_class_data_sh_unpacked.c */
594 
595 /* grib_accessor_class_number_of_values_data_raw_packing.c */
596 
597 /* grib_accessor_class_data_g1simple_packing.c */
598 
599 /* grib_accessor_class_data_g1shsimple_packing.c */
600 
601 /* grib_accessor_class_data_shsimple_packing.c */
602 
603 /* grib_accessor_class_data_constant_field.c */
604 
605 /* grib_accessor_class_data_dummy_field.c */
606 
607 /* grib_2order_packer_simple.c */
608 void grib_free_second_order_groups(grib_context* c, second_order_packed* sp);
609 second_order_packed* grib_get_second_order_groups(grib_context* c, const unsigned long* vals, size_t len);
610 
611 /* grib_accessor_class_variable.c */
612 void accessor_variable_set_type(grib_accessor* a, int type);
613 
614 /* grib_accessor_class_second_order_bits_per_value.c */
615 
616 /* grib_accessor_class_data_g2simple_packing.c */
617 
618 /* grib_accessor_class_data_g2simple_packing_with_preprocessing.c */
619 
620 /* grib_accessor_class_data_g2shsimple_packing.c */
621 
622 /* grib_accessor_class_data_g2complex_packing.c */
623 
624 /* grib_accessor_class_data_2order_packing.c */
625 
626 /* grib_accessor_class_data_2order_packing_count.c */
627 
628 /* grib_accessor_class_data_g1second_order_row_by_row_packing.c */
629 
630 /* grib_accessor_class_data_g1second_order_constant_width_packing.c */
631 
632 /* grib_accessor_class_data_g1second_order_general_packing.c */
633 
634 /* grib_accessor_class_data_g1second_order_general_extended_packing.c */
635 
636 /* grib_accessor_class_g2grid.c */
637 
638 /* grib_accessor_class_unexpanded_descriptors.c */
639 
640 /* grib_accessor_class_expanded_descriptors.c */
641 int grib_accessor_class_expanded_descriptors_set_do_expand(grib_accessor* a, long do_expand);
642 bufr_descriptors_array* grib_accessor_class_expanded_descriptors_get_expanded(grib_accessor* a, int* err);
643 
644 /* grib_accessor_class_bufrdc_expanded_descriptors.c */
645 
646 /* grib_accessor_class_data_apply_bitmap.c */
647 
648 /* grib_accessor_class_data_apply_boustrophedonic.c */
649 
650 /* grib_accessor_class_data_apply_boustrophedonic_bitmap.c */
651 
652 /* grib_accessor_class_data_secondary_bitmap.c */
653 
654 /* grib_accessor_class_data_g1secondary_bitmap.c */
655 
656 /* grib_accessor_class_data_g2secondary_bitmap.c */
657 
658 /* grib_accessor_class_data_jpeg2000_packing.c */
659 
660 /* grib_accessor_class_data_png_packing.c */
661 
662 /* grib_accessor_class_data_raw_packing.c */
663 
664 /* grib_accessor_class_data_complex_packing.c */
665 
666 /* grib_accessor_class_data_g1complex_packing.c */
667 
668 /* grib_accessor_class_gds_not_present_bitmap.c */
669 
670 /* grib_accessor_class_data_apply_gdsnotpresent.c */
671 
672 /* grib_accessor_class_gds_is_present.c */
673 
674 /* grib_accessor_class_select_step_template.c */
675 
676 /* grib_accessor_class_local_definition.c */
677 
678 /* grib_accessor_class_g2_eps.c */
679 
680 /* grib_accessor_class_g2_aerosol.c */
681 
682 /* grib_accessor_class_g2_chemical.c */
683 
684 /* grib_accessor_class_g2_mars_labeling.c */
685 
686 /* grib_accessor_class_transient_darray.c */
687 
688 /* grib_accessor_class_md5.c */
689 
690 /* grib_jasper_encoding.c */
691 int grib_jasper_decode(grib_context* c, unsigned char* buf, size_t* buflen, double* values, size_t* no_values);
692 int grib_jasper_encode(grib_context* c, j2k_encode_helper* helper);
693 int grib_jasper_decode(grib_context* c, unsigned char* buf, size_t* buflen, double* val, size_t* n_vals);
694 int grib_jasper_encode(grib_context* c, j2k_encode_helper* helper);
695 
696 /* grib_openjpeg_encoding.c */
697 int grib_openjpeg_encode(grib_context* c, j2k_encode_helper* helper);
698 int grib_openjpeg_decode(grib_context* c, unsigned char* buf, size_t* buflen, double* val, size_t* n_vals);
699 
700 /* action_class_set_missing.c */
701 grib_action* grib_action_create_set_missing(grib_context* context, const char* name);
702 
703 /* grib_accessor_class_number_of_points.c */
704 
705 /* grib_accessor_class_suppressed.c */
706 
707 /* grib_index.c */
708 int grib_index_compress(grib_index* index);
709 int grib_read_uchar(FILE* fh, unsigned char* val);
710 int grib_read_short(FILE* fh, short* val);
711 int grib_read_long(FILE* fh, long* val);
712 int grib_read_unsigned_long(FILE* fh, unsigned long* val);
713 int grib_write_uchar(FILE* fh, unsigned char val);
714 int grib_write_short(FILE* fh, short val);
715 int grib_write_long(FILE* fh, long val);
716 int grib_write_unsigned_long(FILE* fh, unsigned long val);
717 int grib_write_string(FILE* fh, const char* s);
718 int grib_write_identifier(FILE* fh, const char* id);
719 int grib_write_null_marker(FILE* fh);
720 int grib_write_not_null_marker(FILE* fh);
721 char* grib_read_string(grib_context* c, FILE* fh, int* err);
722 grib_field_tree* grib_read_field_tree(grib_context* c, FILE* fh, grib_file** files, int* err);
723 grib_index* grib_index_new(grib_context* c, const char* key, int* err);
724 void grib_index_delete(grib_index* index);
725 int grib_index_write(grib_index* index, const char* filename);
726 grib_index* grib_index_read(grib_context* c, const char* filename, int* err);
727 int grib_index_search_same(grib_index* index, grib_handle* h);
728 int grib_index_add_file(grib_index* index, const char* filename);
729 int _codes_index_add_file(grib_index* index, const char* filename, int message_type);
730 int grib_index_add_file(grib_index* index, const char* filename);
731 grib_index* grib_index_new_from_file(grib_context* c, const char* filename, const char* keys, int* err);
732 int grib_index_get_size(const grib_index* index, const char* key, size_t* size);
733 int grib_index_get_string(const grib_index* index, const char* key, char** values, size_t* size);
734 int grib_index_get_long(const grib_index* index, const char* key, long* values, size_t* size);
735 int grib_index_get_double(const grib_index* index, const char* key, double* values, size_t* size);
736 int grib_index_select_long(grib_index* index, const char* skey, long value);
737 int grib_index_select_double(grib_index* index, const char* skey, double value);
738 int grib_index_select_string(grib_index* index, const char* skey, const char* value);
739 grib_handle* codes_index_get_handle(grib_field* field, int message_type, int* err);
740 int grib_index_dump_file(FILE* fout, const char* filename);
741 void grib_index_dump(FILE* fout, grib_index* index);
742 char* grib_get_field_file(grib_index* index, off_t* offset);
743 grib_handle* grib_handle_new_from_index(grib_index* index, int* err);
744 grib_handle* codes_new_from_index(grib_index* index, int message_type, int* err);
745 void grib_index_rewind(grib_index* index);
746 int codes_index_set_product_kind(grib_index* index, ProductKind product_kind);
747 int codes_index_set_unpack_bufr(grib_index* index, int unpack);
748 int is_index_file(const char* filename);
749 
750 /* grib_accessor_class_number_of_points_gaussian.c */
751 
752 /* grib_accessor_class_number_of_values.c */
753 
754 /* grib_accessor_class_number_of_coded_values.c */
755 
756 /* grib_accessor_class_g1number_of_coded_values_sh_complex.c */
757 
758 /* grib_accessor_class_g1number_of_coded_values_sh_simple.c */
759 
760 /* grib_accessor_class_dirty.c */
761 
762 /* grib_accessor_class_statistics.c */
763 
764 /* grib_accessor_class_statistics_spectral.c */
765 
766 /* grib_accessor_class_unsigned.c */
767 int pack_long_unsigned_helper(grib_accessor* a, const long* val, size_t* len, int check);
768 
769 /* grib_accessor_class_unsigned_bits.c */
770 
771 /* grib_accessor_class_raw.c */
772 void accessor_raw_set_length(grib_accessor* a, size_t len);
773 long accessor_raw_get_offset(grib_accessor* a);
774 
775 /* grib_accessor_class_bufr_extract_subsets.c */
776 
777 /* grib_accessor_class_bufr_simple_thinning.c */
778 
779 /* grib_accessor_class_spd.c */
780 
781 /* grib_accessor_class_sum.c */
782 
783 /* grib_accessor_class_to_integer.c */
784 
785 /* grib_accessor_class_to_double.c */
786 
787 /* grib_accessor_class_to_string.c */
788 
789 /* grib_accessor_class_sexagesimal2decimal.c */
790 
791 /* grib_accessor_class_vector.c */
792 
793 /* grib_accessor_class_long_vector.c */
794 
795 /* grib_gaussian_reduced.c */
796 void grib_get_reduced_row_wrapper(grib_handle* h, long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last);
797 void grib_get_reduced_row_legacy(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last);
798 void grib_get_reduced_row(long pl, double lon_first, double lon_last, long* npoints, long* ilon_first, long* ilon_last);
799 void grib_get_reduced_row_p(long pl, double lon_first, double lon_last, long* npoints, double* olon_first, double* olon_last);
800 
801 /* grib_accessor_class_abstract_vector.c */
802 
803 /* grib_accessor_class_abstract_long_vector.c */
804 
805 /* grib_loader_from_handle.c */
806 int grib_lookup_long_from_handle(grib_context* gc, grib_loader* loader, const char* name, long* value);
807 int grib_init_accessor_from_handle(grib_loader* loader, grib_accessor* ga, grib_arguments* default_value);
808 
809 /* grib_bits.c */
810 unsigned long grib_decode_unsigned_byte_long(const unsigned char* p, long o, int l);
811 long grib_decode_signed_long(const unsigned char* p, long o, int l);
812 int grib_encode_signed_long(unsigned char* p, long val, long o, int l);
813 void grib_set_bits_on(unsigned char* p, long* bitp, long nbits);
814 int grib_get_bit(const unsigned char* p, long bitp);
815 void grib_set_bit(unsigned char* p, long bitp, int val);
816 long grib_decode_signed_longb(const unsigned char* p, long* bitp, long nbits);
817 int grib_encode_signed_longb(unsigned char* p, long val, long* bitp, long nb);
818 
819 /* grib_timer.c */
820 double proc_cpu(void);
821 char* timename(double t);
822 grib_timer* grib_get_timer(grib_context* c, const char* name, const char* statname, int elapsed);
823 int grib_timer_start(grib_timer* t);
824 int grib_timer_stop(grib_timer* t, long total);
825 double grib_timer_value(grib_timer* t);
826 const char* bytename(double bytes);
827 void grib_timer_print(grib_timer* t);
828 void grib_timer_partial_rate(grib_timer* t, double start, long total);
829 void grib_print_all_timers(void);
830 void grib_reset_all_timers(void);
831 grib_timer* grib_get_timer(grib_context* c, const char* name, const char* statname, int elapsed);
832 int grib_timer_start(grib_timer* t);
833 int grib_timer_stop(grib_timer* t, long total);
834 double grib_timer_value(grib_timer* t);
835 void grib_timer_print(grib_timer* t);
836 void grib_timer_partial_rate(grib_timer* t, double start, long total);
837 void grib_print_all_timers(void);
838 void grib_reset_all_timers(void);
839 
840 /* grib_ibmfloat.c */
841 unsigned long grib_ibm_to_long(double x);
842 double grib_ibmfloat_error(double x);
843 double grib_long_to_ibm(unsigned long x);
844 double grib_ibm_table_e(unsigned long e);
845 double grib_ibm_table_v(unsigned long e);
846 unsigned long grib_ibm_nearest_smaller_to_long(double x);
847 int grib_nearest_smaller_ibm_float(double a, double* ret);
848 
849 /* grib_ieeefloat.c */
850 double grib_ieee_table_e(unsigned long e);
851 double grib_ieee_table_v(unsigned long e);
852 unsigned long grib_ieee_to_long(double x);
853 double grib_ieeefloat_error(double x);
854 double grib_long_to_ieee(unsigned long x);
855 unsigned long grib_ieee_nearest_smaller_to_long(double x);
856 int grib_nearest_smaller_ieee_float(double a, double* ret);
857 double grib_ieeefloat_error(double x);
858 double grib_long_to_ieee(unsigned long x);
859 int grib_nearest_smaller_ieee_float(double a, double* x);
860 unsigned long grib_ieee_to_long(double x);
861 unsigned long grib_ieee64_to_long(double x);
862 double grib_long_to_ieee64(unsigned long x);
863 int grib_ieee_decode_array(grib_context* c, unsigned char* buf, size_t nvals, int bytes, double* val);
864 int grib_ieee_decode_array(grib_context* c, unsigned char* buf, size_t nvals, int bytes, double* val);
865 int grib_ieee_encode_array(grib_context* c, double* val, size_t nvals, int bytes, unsigned char* buf);
866 int grib_ieee_encode_array(grib_context* c, double* val, size_t nvals, int bytes, unsigned char* buf);
867 
868 /* grib_accessor_class_reference_value_error.c */
869 
870 /* grib_memory.c */
871 void* grib_transient_malloc(const grib_context* c, size_t s);
872 void* grib_transient_realloc(const grib_context* c, void* p, size_t s);
873 void grib_transient_free(const grib_context* c, void* p);
874 void* grib_permanent_malloc(const grib_context* c, size_t s);
875 void* grib_permanent_realloc(const grib_context* c, void* p, size_t s);
876 void grib_permanent_free(const grib_context* c, void* p);
877 void* grib_buffer_malloc(const grib_context* c, size_t s);
878 void grib_buffer_free(const grib_context* c, void* p);
879 void* grib_buffer_realloc(const grib_context* c, void* p, size_t s);
880 
881 /* grib_buffer.c */
882 void grib_get_buffer_ownership(const grib_context* c, grib_buffer* b);
883 grib_buffer* grib_create_growable_buffer(const grib_context* c);
884 grib_buffer* grib_new_buffer(const grib_context* c, const unsigned char* data, size_t buflen);
885 void grib_buffer_delete(const grib_context* c, grib_buffer* b);
886 void grib_grow_buffer(const grib_context* c, grib_buffer* b, size_t new_size);
887 void grib_buffer_set_ulength_bits(const grib_context* c, grib_buffer* b, size_t length_bits);
888 void grib_buffer_set_ulength(const grib_context* c, grib_buffer* b, size_t length);
889 void grib_recompute_sections_lengths(grib_section* s);
890 void grib_buffer_replace(grib_accessor* a, const unsigned char* data, size_t newsize, int update_lengths, int update_paddings);
891 void grib_update_sections_lengths(grib_handle* h);
892 
893 /* grib_dumper.c */
894 void grib_init_dumper(grib_dumper* d);
895 void grib_dumper_delete(grib_dumper* d);
896 void grib_dump_long(grib_dumper* d, grib_accessor* a, const char* comment);
897 void grib_dump_double(grib_dumper* d, grib_accessor* a, const char* comment);
898 void grib_dump_string(grib_dumper* d, grib_accessor* a, const char* comment);
899 void grib_dump_string_array(grib_dumper* d, grib_accessor* a, const char* comment);
900 void grib_dump_label(grib_dumper* d, grib_accessor* a, const char* comment);
901 void grib_dump_bytes(grib_dumper* d, grib_accessor* a, const char* comment);
902 void grib_dump_bits(grib_dumper* d, grib_accessor* a, const char* comment);
903 void grib_dump_section(grib_dumper* d, grib_accessor* a, grib_block_of_accessors* block);
904 void grib_dump_values(grib_dumper* d, grib_accessor* a);
905 void grib_dump_header(grib_dumper* d, const grib_handle* h);
906 void grib_dump_footer(grib_dumper* d, const grib_handle* h);
907 
908 /* grib_dumper_class_serialize.c */
909 
910 /* grib_dumper_class_debug.c */
911 
912 /* grib_dumper_class_default.c */
913 
914 /* grib_dumper_class_keys.c */
915 
916 /* grib_dumper_class_bufr_encode_C.c */
917 
918 /* grib_dumper_class_bufr_encode_filter.c */
919 
920 /* grib_dumper_class_bufr_encode_fortran.c */
921 
922 /* grib_dumper_class_bufr_encode_python.c */
923 
924 /* grib_dumper_class_bufr_decode_C.c */
925 
926 /* grib_dumper_class_bufr_decode_filter.c */
927 
928 /* grib_dumper_class_bufr_decode_fortran.c */
929 
930 /* grib_dumper_class_bufr_decode_python.c */
931 
932 /* grib_dumper_class_bufr_simple.c */
933 
934 /* grib_dumper_class_json.c */
935 
936 /* grib_dumper_class_grib_encode_C.c */
937 
938 /* grib_dumper_class_wmo.c */
939 
940 /* grib_dumper_class.c */
941 grib_dumper* grib_dumper_factory(const char* op, const grib_handle* h, FILE* out, unsigned long option_flags, void* arg);
942 void grib_dump_accessors_block(grib_dumper* dumper, grib_block_of_accessors* block);
943 void grib_dump_accessors_list(grib_dumper* dumper, grib_accessors_list* al);
944 int grib_print(grib_handle* h, const char* name, grib_dumper* d);
945 void grib_dump_content(const grib_handle* h, FILE* f, const char* mode, unsigned long flags, void* data);
946 void grib_dump_keys(grib_handle* h, FILE* f, const char* mode, unsigned long flags, void* data, const char** keys, size_t num_keys);
947 grib_dumper* grib_dump_content_with_dumper(grib_handle* h, grib_dumper* dumper, FILE* f, const char* mode, unsigned long flags, void* data);
948 void codes_dump_bufr_flat(grib_accessors_list* al, grib_handle* h, FILE* f, const char* mode, unsigned long flags, void* data);
949 
950 /* grib_context.c */
951 size_t grib_context_read(const grib_context* c, void* ptr, size_t size, void* stream);
952 off_t grib_context_tell(const grib_context* c, void* stream);
953 int grib_context_seek(const grib_context* c, off_t offset, int whence, void* stream);
954 int grib_context_eof(const grib_context* c, void* stream);
955 size_t grib_context_write(const grib_context* c, const void* ptr, size_t size, void* stream);
956 void grib_context_set_print_proc(grib_context* c, grib_print_proc p);
957 void grib_context_set_debug(grib_context* c, int mode);
958 void grib_context_set_logging_proc(grib_context* c, grib_log_proc p);
959 long grib_get_api_version(void);
960 void grib_print_api_version(FILE* out);
961 const char* grib_get_package_name(void);
962 grib_context* grib_context_get_default(void);
963 char* codes_resolve_path(grib_context* c, const char* path);
964 char* grib_context_full_defs_path(grib_context* c, const char* basename);
965 char* grib_samples_path(const grib_context* c);
966 char* grib_definition_path(const grib_context* c);
967 void grib_context_free(const grib_context* c, void* p);
968 void grib_context_free_persistent(const grib_context* c, void* p);
969 void grib_context_reset(grib_context* c);
970 void grib_context_delete(grib_context* c);
971 void codes_bufr_multi_element_constant_arrays_on(grib_context* c);
972 void codes_bufr_multi_element_constant_arrays_off(grib_context* c);
973 void grib_context_set_definitions_path(grib_context* c, const char* path);
974 void grib_context_set_samples_path(grib_context* c, const char* path);
975 void* grib_context_malloc_persistent(const grib_context* c, size_t size);
976 char* grib_context_strdup_persistent(const grib_context* c, const char* s);
977 void* grib_context_malloc_clear_persistent(const grib_context* c, size_t size);
978 void* grib_context_malloc(const grib_context* c, size_t size);
979 void* grib_context_realloc(const grib_context* c, void* p, size_t size);
980 char* grib_context_strdup(const grib_context* c, const char* s);
981 void* grib_context_malloc_clear(const grib_context* c, size_t size);
982 void* grib_context_buffer_malloc(const grib_context* c, size_t size);
983 void grib_context_buffer_free(const grib_context* c, void* p);
984 void* grib_context_buffer_realloc(const grib_context* c, void* p, size_t size);
985 void* grib_context_buffer_malloc_clear(const grib_context* c, size_t size);
986 void grib_context_set_memory_proc(grib_context* c, grib_malloc_proc m, grib_free_proc f, grib_realloc_proc r);
987 void grib_context_set_persistent_memory_proc(grib_context* c, grib_malloc_proc m, grib_free_proc f);
988 void grib_context_set_buffer_memory_proc(grib_context* c, grib_malloc_proc m, grib_free_proc f, grib_realloc_proc r);
989 void grib_context_set_data_accessing_proc(grib_context* c, grib_data_read_proc read, grib_data_write_proc write, grib_data_tell_proc tell);
990 void grib_context_log(const grib_context* c, int level, const char* fmt, ...);
991 void grib_context_print(const grib_context* c, void* descriptor, const char* fmt, ...);
992 int grib_context_get_handle_file_count(grib_context* c);
993 int grib_context_get_handle_total_count(grib_context* c);
994 void grib_context_set_handle_file_count(grib_context* c, int new_count);
995 void grib_context_set_handle_total_count(grib_context* c, int new_count);
996 void grib_context_increment_handle_file_count(grib_context* c);
997 void grib_context_increment_handle_total_count(grib_context* c);
998 bufr_descriptors_array* grib_context_expanded_descriptors_list_get(grib_context* c, const char* key, long* u, size_t size);
999 void grib_context_expanded_descriptors_list_push(grib_context* c, const char* key, bufr_descriptors_array* expanded, bufr_descriptors_array* unexpanded);
1000 void codes_set_codes_assertion_failed_proc(codes_assertion_failed_proc proc);
1001 void codes_assertion_failed(const char* message, const char* file, int line);
1002 int grib_get_gribex_mode(grib_context* c);
1003 void grib_gribex_mode_on(grib_context* c);
1004 void grib_gribex_mode_off(grib_context* c);
1005 void grib_gts_header_on(grib_context* c);
1006 void grib_gts_header_off(grib_context* c);
1007 void grib_multi_support_on(grib_context* c);
1008 void grib_multi_support_off(grib_context* c);
1009 
1010 /* grib_date.c */
1011 int grib_julian_to_datetime(double jd, long* year, long* month, long* day, long* hour, long* minute, long* second);
1012 int grib_datetime_to_julian(long year, long month, long day, long hour, long minute, long second, double* jd);
1013 int grib_datetime_to_julian_d(long year, long month, long day, long hour, long minute, double second, double* jd);
1014 long grib_julian_to_date(long jdate);
1015 long grib_date_to_julian(long ddate);
1016 
1017 /* grib_fieldset.c */
1018 int grib_fieldset_new_column(grib_fieldset* set, int id, char* key, int type);
1019 int grib_fieldset_column_copy_from_handle(grib_handle* h, grib_fieldset* set, int i);
1020 grib_fieldset* grib_fieldset_new_from_files(grib_context* c, char* filenames[], int nfiles, char** keys, int nkeys, const char* where_string, const char* order_by_string, int* err);
1021 int grib_fieldset_apply_where(grib_fieldset* set, const char* where_string);
1022 int grib_fieldset_apply_order_by(grib_fieldset* set, const char* order_by_string);
1023 void grib_fieldset_delete_order_by(grib_context* c, grib_order_by* order_by);
1024 void grib_fieldset_delete(grib_fieldset* set);
1025 int grib_fieldset_add(grib_fieldset* set, char* filename);
1026 void grib_fieldset_rewind(grib_fieldset* set);
1027 grib_handle* grib_fieldset_next_handle(grib_fieldset* set, int* err);
1028 int grib_fieldset_count(grib_fieldset* set);
1029 grib_handle* grib_fieldset_retrieve(grib_fieldset* set, int i, int* err);
1030 
1031 /* grib_filepool.c */
1032 void grib_file_pool_clean(void);
1033 grib_file* grib_file_pool_get_files(void);
1034 int grib_file_pool_read(grib_context* c, FILE* fh);
1035 int grib_file_pool_write(FILE* fh);
1036 grib_file* grib_file_open(const char* filename, const char* mode, int* err);
1037 void grib_file_pool_delete_file(grib_file* file);
1038 void grib_file_close(const char* filename, int force, int* err);
1039 void grib_file_close_all(int* err);
1040 grib_file* grib_get_file(const char* filename, int* err);
1041 grib_file* grib_find_file(short id);
1042 grib_file* grib_file_new(grib_context* c, const char* name, int* err);
1043 void grib_file_delete(grib_file* file);
1044 
1045 /* grib_geography.c */
1046 int grib_get_gaussian_latitudes(long trunc, double* lats);
1047 int is_gaussian_global(double lat1, double lat2, double lon1, double lon2, long num_points_equator, const double* latitudes, double angular_precision);
1048 void rotate(const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double* outlat, double* outlon);
1049 void unrotate(const double inlat, const double inlon, const double angleOfRot, const double southPoleLat, const double southPoleLon, double* outlat, double* outlon);
1050 double geographic_distance_spherical(double radius, double lon1, double lat1, double lon2, double lat2);
1051 double geographic_distance_ellipsoid(double major, double minor, double lon1, double lat1, double lon2, double lat2);
1052 
1053 /* grib_handle.c */
1054 grib_section* grib_section_create(grib_handle* h, grib_accessor* owner);
1055 void grib_swap_sections(grib_section* the_old, grib_section* the_new);
1056 void grib_empty_section(grib_context* c, grib_section* b);
1057 void grib_section_delete(grib_context* c, grib_section* b);
1058 int grib_handle_delete(grib_handle* h);
1059 grib_handle* grib_new_handle(grib_context* c);
1060 grib_handle* grib_handle_new_from_samples(grib_context* c, const char* name);
1061 grib_handle* codes_bufr_handle_new_from_samples(grib_context* c, const char* name);
1062 int grib_write_message(const grib_handle* h, const char* file, const char* mode);
1063 grib_handle* grib_handle_clone(const grib_handle* h);
1064 grib_handle* codes_handle_new_from_file(grib_context* c, FILE* f, ProductKind product, int* error);
1065 grib_handle* codes_grib_handle_new_from_file(grib_context* c, FILE* f, int* error);
1066 grib_handle* codes_bufr_handle_new_from_file(grib_context* c, FILE* f, int* error);
1067 grib_handle* codes_metar_handle_new_from_file(grib_context* c, FILE* f, int* error);
1068 grib_handle* codes_gts_handle_new_from_file(grib_context* c, FILE* f, int* error);
1069 grib_handle* grib_handle_new_from_message_copy(grib_context* c, const void* data, size_t size);
1070 grib_handle* grib_handle_new_from_partial_message_copy(grib_context* c, const void* data, size_t size);
1071 grib_handle* grib_handle_new_from_partial_message(grib_context* c, const void* data, size_t buflen);
1072 grib_handle* grib_handle_new_from_message(grib_context* c, const void* data, size_t buflen);
1073 grib_handle* grib_handle_new_from_multi_message(grib_context* c, void** data, size_t* buflen, int* error);
1074 grib_handle* grib_handle_new_from_file(grib_context* c, FILE* f, int* error);
1075 grib_handle* grib_new_from_file(grib_context* c, FILE* f, int headers_only, int* error);
1076 grib_handle* gts_new_from_file(grib_context* c, FILE* f, int* error);
1077 grib_handle* taf_new_from_file(grib_context* c, FILE* f, int* error);
1078 grib_handle* metar_new_from_file(grib_context* c, FILE* f, int* error);
1079 grib_handle* bufr_new_from_file(grib_context* c, FILE* f, int* error);
1080 grib_handle* any_new_from_file(grib_context* c, FILE* f, int* error);
1081 grib_multi_handle* grib_multi_handle_new(grib_context* c);
1082 int grib_multi_handle_delete(grib_multi_handle* h);
1083 int grib_multi_handle_append(grib_handle* h, int start_section, grib_multi_handle* mh);
1084 int grib_multi_handle_write(grib_multi_handle* h, FILE* f);
1085 int grib_get_partial_message(grib_handle* h, const void** msg, size_t* len, int start_section);
1086 int grib_get_partial_message_copy(grib_handle* h, void* message, size_t* len, int start_section);
1087 int grib_get_message_copy(const grib_handle* h, void* message, size_t* len);
1088 int grib_get_message_offset(const grib_handle* h, off_t* offset);
1089 int codes_get_product_kind(const grib_handle* h, ProductKind* product_kind);
1090 int codes_check_message_header(const void* bytes, size_t length, ProductKind product);
1091 int codes_check_message_footer(const void* bytes, size_t length, ProductKind product);
1092 int grib_get_message_size(const grib_handle* h, size_t* size);
1093 int grib_get_message(const grib_handle* h, const void** msg, size_t* size);
1094 int grib_get_message_headers(grib_handle* h, const void** msg, size_t* size);
1095 grib_handle* grib_handle_new(grib_context* c);
1096 grib_action* grib_action_from_filter(const char* filter);
1097 int grib_handle_apply_action(grib_handle* h, grib_action* a);
1098 int grib_handle_prepare_action(grib_handle* h, grib_action* a);
1099 void grib_multi_support_reset_file(grib_context* c, FILE* f);
1100 void grib_multi_support_reset(grib_context* c);
1101 
1102 /* grib_header_compute.c */
1103 void print_math(grib_math* m);
1104 grib_math* grib_math_clone(grib_context* c, grib_math* m);
1105 void grib_math_delete(grib_context* c, grib_math* m);
1106 grib_math* grib_math_new(grib_context* c, const char* formula, int* err);
1107 
1108 /* grib_hash_keys.c */
1109 const struct grib_keys_hash* grib_keys_hash_get(const char* str, unsigned int len);
1110 grib_itrie* grib_hash_keys_new(grib_context* c, int* count);
1111 void grib_hash_keys_delete(grib_itrie* t);
1112 int grib_hash_keys_get_id(grib_itrie* t, const char* key);
1113 int grib_hash_keys_get_size(grib_itrie* t);
1114 
1115 /* grib_io.c */
1116 off_t stdio_tell(void* data);
1117 int stdio_seek(void* data, off_t len);
1118 int stdio_seek_from_start(void* data, off_t len);
1119 size_t stdio_read(void* data, void* buf, size_t len, int* err);
1120 int wmo_read_any_from_file(FILE* f, void* buffer, size_t* len);
1121 int wmo_read_grib_from_file(FILE* f, void* buffer, size_t* len);
1122 int wmo_read_bufr_from_file(FILE* f, void* buffer, size_t* len);
1123 int wmo_read_gts_from_file(FILE* f, void* buffer, size_t* len);
1124 int wmo_read_taf_from_file(FILE* f, void* buffer, size_t* len);
1125 int wmo_read_metar_from_file(FILE* f, void* buffer, size_t* len);
1126 int wmo_read_any_from_stream(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), void* buffer, size_t* len);
1127 void* wmo_read_any_from_stream_malloc(void* stream_data, long (*stream_proc)(void*, void* buffer, long len), size_t* size, int* err);
1128 void* wmo_read_gts_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err);
1129 void* wmo_read_taf_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err);
1130 void* wmo_read_metar_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err);
1131 void* wmo_read_any_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err);
1132 void* wmo_read_grib_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err);
1133 void* wmo_read_bufr_from_file_malloc(FILE* f, int headers_only, size_t* size, off_t* offset, int* err);
1134 int grib_read_any_headers_only_from_file(grib_context* ctx, FILE* f, void* buffer, size_t* len);
1135 int grib_read_any_from_file(grib_context* ctx, FILE* f, void* buffer, size_t* len);
1136 int grib_read_any_from_memory_alloc(grib_context* ctx, unsigned char** data, size_t* data_length, void** buffer, size_t* length);
1137 int grib_read_any_from_memory(grib_context* ctx, unsigned char** data, size_t* data_length, void* buffer, size_t* len);
1138 int grib_count_in_file(grib_context* c, FILE* f, int* n);
1139 int grib_count_in_filename(grib_context* c, const char* filename, int* n);
1140 int codes_extract_offsets_malloc(grib_context* c, const char* filename, ProductKind product, off_t** offsets, int* length, int strict_mode);
1141 
1142 
1143 /* grib_trie.c */
1144 grib_trie* grib_trie_new(grib_context* c);
1145 void grib_trie_delete_container(grib_trie* t);
1146 void grib_trie_delete(grib_trie* t);
1147 void grib_trie_clear(grib_trie* t);
1148 void* grib_trie_insert(grib_trie* t, const char* key, void* data);
1149 void* grib_trie_insert_no_replace(grib_trie* t, const char* key, void* data);
1150 void* grib_trie_get(grib_trie* t, const char* key);
1151 
1152 /* grib_trie_with_rank.c */
1153 grib_trie_with_rank* grib_trie_with_rank_new(grib_context* c);
1154 void grib_trie_with_rank_delete_container(grib_trie_with_rank* t);
1155 void grib_trie_with_rank_delete(grib_trie_with_rank* t);
1156 void grib_trie_with_rank_clear(grib_trie_with_rank* t);
1157 int grib_trie_with_rank_insert(grib_trie_with_rank* t, const char* key, void* data);
1158 void* grib_trie_with_rank_get(grib_trie_with_rank* t, const char* key, int rank);
1159 
1160 /* grib_itrie.c */
1161 grib_itrie* grib_itrie_new(grib_context* c, int* count);
1162 void grib_itrie_delete(grib_itrie* t);
1163 int grib_itrie_get_id(grib_itrie* t, const char* key);
1164 int grib_itrie_insert(grib_itrie* t, const char* key);
1165 int grib_itrie_get_size(grib_itrie* t);
1166 
1167 /* grib_rules.c */
1168 grib_rule_entry* grib_new_rule_entry(grib_context* c, const char* name, grib_expression* expression);
1169 grib_rule* grib_new_rule(grib_context* c, grib_expression* condition, grib_rule_entry* entries);
1170 
1171 /* grib_keys_iterator.c */
1172 grib_keys_iterator* grib_keys_iterator_new(grib_handle* h, unsigned long filter_flags, const char* name_space);
1173 int grib_keys_iterator_set_flags(grib_keys_iterator* ki, unsigned long flags);
1174 int grib_keys_iterator_rewind(grib_keys_iterator* ki);
1175 int grib_keys_iterator_next(grib_keys_iterator* kiter);
1176 const char* grib_keys_iterator_get_name(const grib_keys_iterator* kiter);
1177 grib_accessor* grib_keys_iterator_get_accessor(grib_keys_iterator* kiter);
1178 int grib_keys_iterator_delete(grib_keys_iterator* kiter);
1179 int grib_keys_iterator_get_long(const grib_keys_iterator* kiter, long* v, size_t* len);
1180 int grib_keys_iterator_get_double(const grib_keys_iterator* kiter, double* v, size_t* len);
1181 int grib_keys_iterator_get_string(const grib_keys_iterator* kiter, char* v, size_t* len);
1182 int grib_keys_iterator_get_bytes(const grib_keys_iterator* kiter, unsigned char* v, size_t* len);
1183 int grib_keys_iterator_get_native_type(const grib_keys_iterator* kiter);
1184 
1185 /* bufr_keys_iterator.c */
1186 bufr_keys_iterator* codes_bufr_keys_iterator_new(grib_handle* h, unsigned long filter_flags);
1187 bufr_keys_iterator* codes_bufr_data_section_keys_iterator_new(grib_handle* h);
1188 int codes_bufr_keys_iterator_rewind(bufr_keys_iterator* ki);
1189 int codes_bufr_keys_iterator_next(bufr_keys_iterator* kiter);
1190 char* codes_bufr_keys_iterator_get_name(const bufr_keys_iterator* kiter);
1191 grib_accessor* codes_bufr_keys_iterator_get_accessor(bufr_keys_iterator* kiter);
1192 int codes_bufr_keys_iterator_delete(bufr_keys_iterator* kiter);
1193 
1194 /* grib_parse_utils.c */
1195 int grib_recompose_name(grib_handle* h, grib_accessor* observer, const char* uname, char* fname, int fail);
1196 int grib_accessors_list_print(grib_handle* h, grib_accessors_list* al, const char* name, int type, const char* format, const char* separator, int maxcols, int* newline, FILE* out);
1197 int grib_recompose_print(grib_handle* h, grib_accessor* observer, const char* uname, int fail, FILE* out);
1198 grib_action_file* grib_find_action_file(const char* fname, grib_action_file_list* afl);
1199 int grib_yywrap(void);
1200 char* file_being_parsed(void);
1201 int grib_yyerror(const char* msg);
1202 void grib_parser_include(const char* included_fname);
1203 grib_concept_value* grib_parse_concept_file(grib_context* gc, const char* filename);
1204 grib_hash_array_value* grib_parse_hash_array_file(grib_context* gc, const char* filename);
1205 grib_rule* grib_parse_rules_file(grib_context* gc, const char* filename);
1206 grib_action* grib_parse_file(grib_context* gc, const char* filename);
1207 int grib_type_to_int(char id);
1208 
1209 /* grib_query.c */
1210 grib_accessors_list* grib_find_accessors_list(const grib_handle* h, const char* name);
1211 char* grib_split_name_attribute(grib_context* c, const char* name, char* attribute_name);
1212 grib_accessor* grib_find_accessor(const grib_handle* h, const char* name);
1213 grib_accessor* grib_find_attribute(grib_handle* h, const char* name, const char* attr_name, int* err);
1214 grib_accessor* grib_find_accessor_fast(grib_handle* h, const char* name);
1215 
1216 /* grib_scaling.c */
1217 double grib_power(long s, long n);
1218 long grib_get_binary_scale_fact(double max, double min, long bpval, int* ret);
1219 long grib_get_bits_per_value(double max, double min, long binary_scale_factor);
1220 long grib_get_decimal_scale_fact(double max, double min, long bpval, long binary_scale);
1221 
1222 /* grib_templates.c */
1223 /*grib_handle *grib_internal_sample(grib_context *c, const char *name);*/
1224 grib_handle* grib_external_template(grib_context* c, const char* name);
1225 grib_handle* bufr_external_template(grib_context* c, const char* name);
1226 char* grib_external_template_path(grib_context* c, const char* name);
1227 
1228 /* grib_dependency.c */
1229 grib_handle* grib_handle_of_accessor(const grib_accessor* a);
1230 void grib_dependency_add(grib_accessor* observer, grib_accessor* observed);
1231 void grib_dependency_remove_observed(grib_accessor* observed);
1232 int _grib_dependency_notify_change(grib_handle* h, grib_accessor* observed);
1233 int grib_dependency_notify_change(grib_accessor* observed);
1234 void grib_dependency_remove_observer(grib_accessor* observer);
1235 void grib_dependency_observe_expression(grib_accessor* observer, grib_expression* e);
1236 void grib_dependency_observe_arguments(grib_accessor* observer, grib_arguments* a);
1237 
1238 /* grib_value.c */
1239 int grib_set_expression(grib_handle* h, const char* name, grib_expression* e);
1240 int grib_set_expression_internal(grib_handle* h, const char* name, grib_expression* e);
1241 int grib_set_long_internal(grib_handle* h, const char* name, long val);
1242 int grib_set_long(grib_handle* h, const char* name, long val);
1243 int grib_set_double_internal(grib_handle* h, const char* name, double val);
1244 int grib_copy_namespace(grib_handle* dest, const char* name, grib_handle* src);
1245 int grib_set_double(grib_handle* h, const char* name, double val);
1246 int grib_set_string_internal(grib_handle* h, const char* name, const char* val, size_t* length);
1247 int grib_set_string(grib_handle* h, const char* name, const char* val, size_t* length);
1248 int grib_set_string_array(grib_handle* h, const char* name, const char** val, size_t length);
1249 int grib_set_bytes_internal(grib_handle* h, const char* name, const unsigned char* val, size_t* length);
1250 int grib_set_bytes(grib_handle* h, const char* name, const unsigned char* val, size_t* length);
1251 int grib_clear(grib_handle* h, const char* name);
1252 int grib_set_missing_internal(grib_handle* h, const char* name);
1253 int grib_set_missing(grib_handle* h, const char* name);
1254 int grib_is_missing_long(grib_accessor* a, long x);
1255 int grib_is_missing_double(grib_accessor* a, double x);
1256 int grib_is_missing_string(grib_accessor* a, unsigned char* x, size_t len);
1257 int grib_accessor_is_missing(grib_accessor* a, int* err);
1258 int grib_is_missing(const grib_handle* h, const char* name, int* err);
1259 int grib_is_defined(const grib_handle* h, const char* name);
1260 int grib_set_flag(grib_handle* h, const char* name, unsigned long flag);
1261 int grib_set_double_array_internal(grib_handle* h, const char* name, const double* val, size_t length);
1262 int grib_set_force_double_array(grib_handle* h, const char* name, const double* val, size_t length);
1263 int grib_set_double_array(grib_handle* h, const char* name, const double* val, size_t length);
1264 int grib_set_long_array_internal(grib_handle* h, const char* name, const long* val, size_t length);
1265 int grib_set_long_array(grib_handle* h, const char* name, const long* val, size_t length);
1266 int grib_get_long_internal(grib_handle* h, const char* name, long* val);
1267 int grib_is_in_dump(grib_handle* h, const char* name);
1268 int grib_attributes_count(grib_accessor* a, size_t* size);
1269 int grib_get_long(const grib_handle* h, const char* name, long* val);
1270 int grib_get_double_internal(grib_handle* h, const char* name, double* val);
1271 int grib_get_double(const grib_handle* h, const char* name, double* val);
1272 int grib_get_double_element_internal(grib_handle* h, const char* name, int i, double* val);
1273 int grib_get_double_element(const grib_handle* h, const char* name, int i, double* val);
1274 int grib_points_get_values(grib_handle* h, grib_points* points, double* val);
1275 int grib_get_double_elements(const grib_handle* h, const char* name, int* index_array, long len, double* val_array);
1276 int grib_get_string_internal(grib_handle* h, const char* name, char* val, size_t* length);
1277 int grib_get_string(const grib_handle* h, const char* name, char* val, size_t* length);
1278 int grib_get_bytes_internal(const grib_handle* h, const char* name, unsigned char* val, size_t* length);
1279 int grib_get_bytes(const grib_handle* h, const char* name, unsigned char* val, size_t* length);
1280 int grib_get_native_type(const grib_handle* h, const char* name, int* type);
1281 const char* grib_get_accessor_class_name(grib_handle* h, const char* name);
1282 int _grib_get_double_array_internal(const grib_handle* h, grib_accessor* a, double* val, size_t buffer_len, size_t* decoded_length);
1283 int grib_get_double_array_internal(const grib_handle* h, const char* name, double* val, size_t* length);
1284 int grib_get_double_array(const grib_handle* h, const char* name, double* val, size_t* length);
1285 int _grib_get_string_length(grib_accessor* a, size_t* size);
1286 int grib_get_string_length(const grib_handle* h, const char* name, size_t* size);
1287 int _grib_get_size(const grib_handle* h, grib_accessor* a, size_t* size);
1288 int grib_get_size(const grib_handle* h, const char* name, size_t* size);
1289 int grib_get_length(const grib_handle* h, const char* name, size_t* length);
1290 int grib_get_count(grib_handle* h, const char* name, size_t* size);
1291 int grib_get_offset(const grib_handle* h, const char* key, size_t* val);
1292 int _grib_get_string_array_internal(const grib_handle* h, grib_accessor* a, char** val, size_t buffer_len, size_t* decoded_length);
1293 int grib_get_string_array(const grib_handle* h, const char* name, char** val, size_t* length);
1294 int _grib_get_long_array_internal(const grib_handle* h, grib_accessor* a, long* val, size_t buffer_len, size_t* decoded_length);
1295 int grib_get_long_array_internal(grib_handle* h, const char* name, long* val, size_t* length);
1296 int grib_get_long_array(const grib_handle* h, const char* name, long* val, size_t* length);
1297 grib_key_value_list* grib_key_value_list_clone(grib_context* c, grib_key_value_list* list);
1298 void grib_key_value_list_delete(grib_context* c, grib_key_value_list* kvl);
1299 int grib_get_key_value_list(grib_handle* h, grib_key_value_list* list);
1300 int grib_get_values(grib_handle* h, grib_values* args, size_t count);
1301 int grib_set_values(grib_handle* h, grib_values* args, size_t count);
1302 int grib_get_nearest_smaller_value(grib_handle* h, const char* name, double val, double* nearest);
1303 void grib_print_values(grib_values* values, int count);
1304 int grib_values_check(grib_handle* h, grib_values* values, int count);
1305 int grib_key_equal(grib_handle* h1, grib_handle* h2, const char* key, int type, int* err);
1306 int codes_copy_key(grib_handle* h1, grib_handle* h2, const char* key, int type);
1307 
1308 /* grib_errors.c */
1309 const char* grib_get_error_message(int code);
1310 void grib_check(const char* call, const char* file, int line, int e, const char* msg);
1311 
1312 /* grib_expression_class_binop.c */
1313 grib_expression* new_binop_expression(grib_context* c, grib_binop_long_proc long_func, grib_binop_double_proc double_func, grib_expression* left, grib_expression* right);
1314 
1315 /* grib_expression_class_logical_and.c */
1316 grib_expression* new_logical_and_expression(grib_context* c, grib_expression* left, grib_expression* right);
1317 
1318 /* grib_expression_class_logical_or.c */
1319 grib_expression* new_logical_or_expression(grib_context* c, grib_expression* left, grib_expression* right);
1320 
1321 /* grib_expression_class_is_in_dict.c */
1322 grib_expression* new_is_in_dict_expression(grib_context* c, const char* name, const char* list);
1323 
1324 /* grib_expression_class_true.c */
1325 grib_expression* new_true_expression(grib_context* c);
1326 
1327 /* grib_expression_class_string_compare.c */
1328 grib_expression* new_string_compare_expression(grib_context* c, grib_expression* left, grib_expression* right);
1329 
1330 /* grib_expression_class_unop.c */
1331 grib_expression* new_unop_expression(grib_context* c, grib_unop_long_proc long_func, grib_unop_double_proc double_func, grib_expression* exp);
1332 
1333 /* grib_expression_class_functor.c */
1334 grib_expression* new_func_expression(grib_context* c, const char* name, grib_arguments* args);
1335 
1336 /* grib_expression_class_accessor.c */
1337 grib_expression* new_accessor_expression(grib_context* c, const char* name, long start, size_t length);
1338 
1339 /* grib_expression_class_is_in_list.c */
1340 grib_expression* new_is_in_list_expression(grib_context* c, const char* name, const char* list);
1341 
1342 /* grib_expression_class_is_integer.c */
1343 grib_expression* new_is_integer_expression(grib_context* c, const char* name, int start, int length);
1344 
1345 /* grib_expression_class_length.c */
1346 grib_expression* new_length_expression(grib_context* c, const char* name);
1347 
1348 /* grib_expression_class_long.c */
1349 grib_expression* new_long_expression(grib_context* c, long value);
1350 
1351 /* grib_expression_class_double.c */
1352 grib_expression* new_double_expression(grib_context* c, double value);
1353 
1354 /* grib_expression_class_string.c */
1355 grib_expression* new_string_expression(grib_context* c, const char* value);
1356 
1357 /* grib_expression_class_sub_string.c */
1358 grib_expression* new_sub_string_expression(grib_context* c, const char* value, size_t start, size_t length);
1359 
1360 /* grib_box.c */
1361 grib_points* grib_box_get_points(grib_box* box, double north, double west, double south, double east, int* err);
1362 int grib_box_init(grib_box* box, grib_handle* h, grib_arguments* args);
1363 int grib_box_delete(grib_box* box);
1364 grib_points* grib_points_new(grib_context* c, size_t size);
1365 void grib_points_delete(grib_points* points);
1366 
1367 /* grib_box_class.c */
1368 grib_box* grib_box_factory(grib_handle* h, grib_arguments* args);
1369 
1370 /* grib_box_class_gen.c */
1371 
1372 /* grib_box_class_regular_gaussian.c */
1373 
1374 /* grib_box_class_reduced_gaussian.c */
1375 
1376 /* grib_nearest.c */
1377 int grib_nearest_find(grib_nearest* nearest, const grib_handle* h, double inlat, double inlon, unsigned long flags, double* outlats, double* outlons, double* values, double* distances, int* indexes, size_t* len);
1378 int grib_nearest_init(grib_nearest* i, grib_handle* h, grib_arguments* args);
1379 int grib_nearest_delete(grib_nearest* i);
1380 void grib_binary_search(double xx[], const unsigned long n, double x, int* ju, int* jl);
1381 int grib_nearest_find_multiple(const grib_handle* h, int is_lsm, const double* inlats, const double* inlons, long npoints, double* outlats, double* outlons, double* values, double* distances, int* indexes);
1382 int grib_nearest_find_generic(grib_nearest* nearest, grib_handle* h, double inlat, double inlon, unsigned long flags,
1383     const char*  values_keyname, const char* radius_keyname,
1384     const char* Ni_keyname, const char* Nj_keyname,
1385     double**     out_lats,
1386     int*         out_lats_count,
1387     double**     out_lons,
1388     int*         out_lons_count,
1389     double**     out_distances,
1390     double* outlats, double* outlons, double* values, double* distances, int* indexes, size_t* len);
1391 
1392 /* grib_nearest_class.c */
1393 grib_nearest* grib_nearest_factory(grib_handle* h, grib_arguments* args);
1394 
1395 /* grib_nearest_class_gen.c */
1396 
1397 /* grib_nearest_class_regular.c */
1398 
1399 /* grib_nearest_class_reduced.c */
1400 
1401 /* grib_nearest_class_latlon_reduced.c */
1402 
1403 /* grib_nearest_class_sh.c */
1404 
1405 /* grib_nearest_class_lambert_conformal.c */
1406 
1407 /* grib_nearest_class_polar_stereographic.c */
1408 
1409 /* grib_iterator_class_polar_stereographic.c */
1410 
1411 /* grib_iterator_class_lambert_azimuthal_equal_area.c */
1412 
1413 /* grib_iterator_class_lambert_conformal.c */
1414 
1415 /* grib_iterator.c */
1416 int grib_get_data(const grib_handle* h, double* lats, double* lons, double* values);
1417 int grib_iterator_next(grib_iterator* i, double* lat, double* lon, double* value);
1418 int grib_iterator_has_next(grib_iterator* i);
1419 int grib_iterator_previous(grib_iterator* i, double* lat, double* lon, double* value);
1420 int grib_iterator_reset(grib_iterator* i);
1421 int grib_iterator_init(grib_iterator* i, grib_handle* h, grib_arguments* args);
1422 int grib_iterator_delete(grib_iterator* i);
1423 
1424 /* grib_iterator_class.c */
1425 grib_iterator* grib_iterator_factory(grib_handle* h, grib_arguments* args, unsigned long flags, int* ret);
1426 
1427 /* grib_iterator_class_gaussian.c */
1428 
1429 /* grib_iterator_class_gaussian_reduced.c */
1430 
1431 /* grib_iterator_class_latlon_reduced.c */
1432 
1433 /* grib_iterator_class_gen.c */
1434 int transform_iterator_data(grib_handle* h, double* data, long iScansNegatively, long jScansPositively, long jPointsAreConsecutive, long alternativeRowScanning, size_t numPoints, long nx, long ny);
1435 
1436 /* grib_iterator_class_latlon.c */
1437 
1438 /* grib_iterator_class_regular.c */
1439 
1440 /* grib_iterator_class_space_view.c */
1441 
1442 /* grib_expression.c */
1443 int grib_expression_native_type(grib_handle* h, grib_expression* g);
1444 int grib_expression_evaluate_long(grib_handle* h, grib_expression* g, long* result);
1445 int grib_expression_evaluate_double(grib_handle* h, grib_expression* g, double* result);
1446 const char* grib_expression_evaluate_string(grib_handle* h, grib_expression* g, char* buf, size_t* size, int* err);
1447 const char* grib_expression_get_name(grib_expression* g);
1448 void grib_expression_print(grib_context* ctx, grib_expression* g, grib_handle* f);
1449 void grib_expression_free(grib_context* ctx, grib_expression* g);
1450 void grib_expression_add_dependency(grib_expression* e, grib_accessor* observer);
1451 int grib_expression_set_value(grib_handle* h, grib_expression* g, grib_values* v);
1452 grib_arguments* grib_arguments_new(grib_context* c, grib_expression* g, grib_arguments* n);
1453 void grib_arguments_free(grib_context* c, grib_arguments* g);
1454 void grib_arguments_print(grib_context* c, grib_arguments* g, grib_handle* f);
1455 const char* grib_arguments_get_name(grib_handle* h, grib_arguments* args, int n);
1456 const char* grib_arguments_get_string(grib_handle* h, grib_arguments* args, int n);
1457 long grib_arguments_get_long(grib_handle* h, grib_arguments* args, int n);
1458 double grib_arguments_get_double(grib_handle* h, grib_arguments* args, int n);
1459 grib_expression* grib_arguments_get_expression(grib_handle* h, grib_arguments* args, int n);
1460 
1461 /* codes_util.c */
1462 double normalise_longitude_in_degrees(double lon);
1463 char get_dir_separator_char(void);
1464 int path_is_regular_file(const char* path);
1465 int path_is_directory(const char* filename);
1466 char* codes_getenv(const char* name);
1467 
1468 /* grib_util.c */
1469 grib_handle* grib_util_sections_copy(grib_handle* hfrom, grib_handle* hto, int what, int* err);
1470 grib_string_list* grib_util_get_param_id(const char* mars_param);
1471 grib_string_list* grib_util_get_mars_param(const char* param_id);
1472 grib_handle* grib_util_set_spec(grib_handle* h, const grib_util_grid_spec* spec, const grib_util_packing_spec* packing_spec, int flags, const double* data_values, size_t data_values_count, int* err);
1473 grib_handle* grib_util_set_spec2(grib_handle* h, const grib_util_grid_spec2* spec, const grib_util_packing_spec* packing_spec, int flags, const double* data_values, size_t data_values_count, int* err);
1474 int grib_moments(grib_handle* h, double east, double north, double west, double south, int order, double* moments, long* count);
1475 int parse_keyval_string(const char* grib_tool, char* arg, int values_required, int default_type, grib_values values[], int* count);
1476 int grib2_is_PDTN_EPS(long productDefinitionTemplateNumber);
1477 int grib2_is_PDTN_Chemical(long productDefinitionTemplateNumber);
1478 int grib2_is_PDTN_ChemicalSourceSink(long productDefinitionTemplateNumber);
1479 int grib2_is_PDTN_ChemicalDistFunc(long productDefinitionTemplateNumber);
1480 int grib2_is_PDTN_Aerosol(long productDefinitionTemplateNumber);
1481 int grib2_is_PDTN_AerosolOptical(long productDefinitionTemplateNumber);
1482 int grib2_select_PDTN(int is_eps, int is_instant, int is_chemical, int is_chemical_srcsink, int is_chemical_distfn, int is_aerosol, int is_aerosol_optical);
1483 size_t sum_of_pl_array(const long* pl, size_t plsize);
1484 int grib_is_earth_oblate(grib_handle* h);
1485 int grib_util_grib_data_quality_check(grib_handle* h, double min_val, double max_val);
1486 
1487 /* bufr_util.c */
1488 int compute_bufr_key_rank(grib_handle* h, grib_string_list* keys, const char* key);
1489 char** codes_bufr_copy_data_return_copied_keys(grib_handle* hin, grib_handle* hout, size_t* nkeys, int* err);
1490 int codes_bufr_copy_data(grib_handle* hin, grib_handle* hout);
1491 int codes_bufr_extract_headers_malloc(grib_context* c, const char* filename, codes_bufr_header** result, int* num_messages, int strict_mode);
1492 int codes_bufr_header_get_string(codes_bufr_header* bh, const char* key, char* val, size_t* len);
1493 int codes_bufr_key_is_header(const grib_handle* h, const char* key, int* err);
1494 
1495 /* string_util.c */
1496 int strcmp_nocase(const char* s1, const char* s2);
1497 void rtrim(char* s);
1498 void lrtrim(char** x, int do_left, int do_right);
1499 const char* extract_filename(const char* filepath);
1500 char** string_split(char* inputString, const char* delimiter);
1501 int string_to_long(const char* input, long* output);
1502 int string_ends_with(const char* str1, const char* str2);
1503 int count_char_in_string(const char* str, char c);
1504 
1505 /* functions.c */
1506 long grib_op_eq(long a, long b);
1507 long grib_op_ne(long a, long b);
1508 long grib_op_lt(long a, long b);
1509 long grib_op_gt(long a, long b);
1510 long grib_op_and(long a, long b);
1511 long grib_op_or(long a, long b);
1512 long grib_op_ge(long a, long b);
1513 long grib_op_le(long a, long b);
1514 long grib_op_bit(long a, long b);
1515 long grib_op_bitoff(long a, long b);
1516 long grib_op_not(long a);
1517 long grib_op_neg(long a);
1518 double grib_op_neg_d(double a);
1519 long grib_op_pow(long a, long b);
1520 long grib_op_add(long a, long b);
1521 long grib_op_sub(long a, long b);
1522 long grib_op_div(long a, long b);
1523 long grib_op_mul(long a, long b);
1524 long grib_op_modulo(long a, long b);
1525 double grib_op_mul_d(double a, double b);
1526 double grib_op_div_d(double a, double b);
1527 double grib_op_add_d(double a, double b);
1528 double grib_op_sub_d(double a, double b);
1529 double grib_op_eq_d(double a, double b);
1530 double grib_op_ne_d(double a, double b);
1531 double grib_op_lt_d(double a, double b);
1532 double grib_op_gt_d(double a, double b);
1533 double grib_op_ge_d(double a, double b);
1534 double grib_op_le_d(double a, double b);
1535 const char* grib_binop_long_proc_name(grib_binop_long_proc proc);
1536 const char* grib_binop_double_proc_name(grib_binop_double_proc proc);
1537 const char* grib_unop_long_proc_name(grib_unop_long_proc proc);
1538 const char* grib_unop_double_proc_name(grib_unop_double_proc proc);
1539 
1540 /* codes_memfs.c */
1541 FILE* codes_fopen(const char* name, const char* mode);
1542 int codes_access(const char* name, int mode);
1543 
1544 /* grib_accessor_class_data_g2bifourier_packing.c */
1545 
1546 /* grib_optimize_decimal_factor.c */
1547 int grib_optimize_decimal_factor(grib_accessor* a, const char* reference_value, const double pmax, const double pmin, const int knbit, const int compat_gribex, const int compat_32bit, long* kdec, long* kbin, double* ref);
1548 
1549 /* grib_api_version.c */
1550 const char* grib_get_git_sha1(void);
1551 
1552 /* grib_bits_any_endian.c */
1553 int grib_is_all_bits_one(long val, long nbits);
1554 int grib_encode_string(unsigned char* bitStream, long* bitOffset, size_t numberOfCharacters, const char* string);
1555 char* grib_decode_string(const unsigned char* bitStream, long* bitOffset, size_t numberOfCharacters, char* string);
1556 unsigned long grib_decode_unsigned_long(const unsigned char* p, long* bitp, long nbits);
1557 int grib_encode_unsigned_long(unsigned char* p, unsigned long val, long* bitp, long nbits);
1558 size_t grib_decode_size_t(const unsigned char* p, long* bitp, long nbits);
1559 int grib_encode_unsigned_longb(unsigned char* p, unsigned long val, long* bitp, long nb);
1560 int grib_encode_size_tb(unsigned char* p, size_t val, long* bitp, long nb);
1561 
1562 
1563 /* grib_bits_any_endian_simple.c */
1564 int grib_decode_long_array(const unsigned char* p, long* bitp, long bitsPerValue, size_t n_vals, long* val);
1565 int grib_decode_double_array(const unsigned char* p, long* bitp, long bitsPerValue, double reference_value, double s, double d, size_t n_vals, double* val);
1566 int grib_decode_double_array_complex(const unsigned char* p, long* bitp, long nbits, double reference_value, double s, double* d, size_t size, double* val);
1567 int grib_encode_long_array(size_t n_vals, const long* val, long bits_per_value, unsigned char* p, long* off);
1568 int grib_encode_double_array(size_t n_vals, const double* val, long bits_per_value, double reference_value, double d, double divisor, unsigned char* p, long* off);
1569 int grib_encode_double_array_complex(size_t n_vals, double* val, long nbits, double reference_value, double* scal, double d, double divisor, unsigned char* p, long* bitp);
1570