eccodes
 All Data Structures Namespaces Files Functions Groups Pages
Macros | Functions
eccodes.h File Reference

The ecCodes C header file. More...

Macros

#define CODES_KEYS_ITERATOR_ALL_KEYS   0
 
#define CODES_KEYS_ITERATOR_SKIP_READ_ONLY   (1<<0)
 
#define CODES_KEYS_ITERATOR_SKIP_OPTIONAL   (1<<1)
 
#define CODES_KEYS_ITERATOR_SKIP_EDITION_SPECIFIC   (1<<2)
 
#define CODES_KEYS_ITERATOR_SKIP_CODED   (1<<3)
 
#define CODES_KEYS_ITERATOR_SKIP_COMPUTED   (1<<4)
 
#define CODES_KEYS_ITERATOR_SKIP_DUPLICATES   (1<<5)
 
#define CODES_KEYS_ITERATOR_SKIP_FUNCTION   (1<<6)
 
#define CODES_SUCCESS   0
 No error. More...
 
#define CODES_END_OF_FILE   -1
 End of resource reached. More...
 
#define CODES_INTERNAL_ERROR   -2
 Internal error. More...
 
#define CODES_BUFFER_TOO_SMALL   -3
 Passed buffer is too small. More...
 
#define CODES_NOT_IMPLEMENTED   -4
 Function not yet implemented. More...
 
#define CODES_7777_NOT_FOUND   -5
 Missing 7777 at end of message. More...
 
#define CODES_ARRAY_TOO_SMALL   -6
 Passed array is too small. More...
 
#define CODES_FILE_NOT_FOUND   -7
 File not found. More...
 
#define CODES_CODE_NOT_FOUND_IN_TABLE   -8
 Code not found in code table. More...
 
#define CODES_WRONG_ARRAY_SIZE   -9
 Array size mismatch. More...
 
#define CODES_NOT_FOUND   -10
 Key/value not found. More...
 
#define CODES_IO_PROBLEM   -11
 Input output problem. More...
 
#define CODES_INVALID_MESSAGE   -12
 Message invalid. More...
 
#define CODES_DECODING_ERROR   -13
 Decoding invalid. More...
 
#define CODES_ENCODING_ERROR   -14
 Encoding invalid. More...
 
#define CODES_NO_MORE_IN_SET   -15
 Code cannot unpack because of string too small. More...
 
#define CODES_GEOCALCULUS_PROBLEM   -16
 Problem with calculation of geographic attributes. More...
 
#define CODES_OUT_OF_MEMORY   -17
 Out of memory. More...
 
#define CODES_READ_ONLY   -18
 Value is read only. More...
 
#define CODES_INVALID_ARGUMENT   -19
 Invalid argument. More...
 
#define CODES_NULL_HANDLE   -20
 Null handle. More...
 
#define CODES_INVALID_SECTION_NUMBER   -21
 Invalid section number. More...
 
#define CODES_VALUE_CANNOT_BE_MISSING   -22
 Value cannot be missing. More...
 
#define CODES_WRONG_LENGTH   -23
 Wrong message length. More...
 
#define CODES_INVALID_TYPE   -24
 Invalid key type. More...
 
#define CODES_WRONG_STEP   -25
 Unable to set step. More...
 
#define CODES_WRONG_STEP_UNIT   -26
 Wrong units for step (step must be integer) More...
 
#define CODES_INVALID_FILE   -27
 Invalid file id. More...
 
#define CODES_INVALID_GRIB   -28
 Invalid grib id. More...
 
#define CODES_INVALID_INDEX   -29
 Invalid index id. More...
 
#define CODES_INVALID_ITERATOR   -30
 Invalid iterator id. More...
 
#define CODES_INVALID_KEYS_ITERATOR   -31
 Invalid keys iterator id. More...
 
#define CODES_INVALID_NEAREST   -32
 Invalid nearest id. More...
 
#define CODES_INVALID_ORDERBY   -33
 Invalid order by. More...
 
#define CODES_MISSING_KEY   -34
 Missing a key from the fieldset. More...
 
#define CODES_OUT_OF_AREA   -35
 The point is out of the grid area. More...
 
#define CODES_CONCEPT_NO_MATCH   -36
 Concept no match. More...
 
#define CODES_HASH_ARRAY_NO_MATCH   -37
 Hash array no match. More...
 
#define CODES_NO_DEFINITIONS   -38
 Definitions files not found. More...
 
#define CODES_WRONG_TYPE   -39
 Wrong type while packing. More...
 
#define CODES_END   -40
 End of resource. More...
 
#define CODES_NO_VALUES   -41
 Unable to code a field without values. More...
 
#define CODES_WRONG_GRID   -42
 Grid description is wrong or inconsistent. More...
 
#define CODES_END_OF_INDEX   -43
 End of index reached. More...
 
#define CODES_NULL_INDEX   -44
 Null index. More...
 
#define CODES_PREMATURE_END_OF_FILE   -45
 End of resource reached when reading message. More...
 
#define CODES_INTERNAL_ARRAY_TOO_SMALL   -46
 An internal array is too small. More...
 
#define CODES_MESSAGE_TOO_LARGE   -47
 Message is too large for the current architecture. More...
 
#define CODES_CONSTANT_FIELD   -48
 Constant field. More...
 
#define CODES_SWITCH_NO_MATCH   -49
 Switch unable to find a matching case. More...
 
#define CODES_UNDERFLOW   -50
 Underflow. More...
 
#define CODES_MESSAGE_MALFORMED   -51
 Message malformed. More...
 
#define CODES_CORRUPTED_INDEX   -52
 Index is corrupted. More...
 
#define CODES_INVALID_BPV   -53
 Invalid number of bits per value. More...
 
#define CODES_DIFFERENT_EDITION   -54
 Edition of two messages is different. More...
 
#define CODES_VALUE_DIFFERENT   -55
 Value is different. More...
 
#define CODES_INVALID_KEY_VALUE   -56
 Invalid key value. More...
 
#define CODES_STRING_TOO_SMALL   -57
 String is smaller than requested. More...
 
#define CODES_WRONG_CONVERSION   -58
 Wrong type conversion. More...
 
#define CODES_MISSING_BUFR_ENTRY   -59
 Missing BUFR table entry for descriptor. More...
 
#define CODES_NULL_POINTER   -60
 Null pointer. More...
 
#define CODES_ATTRIBUTE_CLASH   -61
 Attribute is already present, cannot add. More...
 
#define CODES_TOO_MANY_ATTRIBUTES   -62
 Too many attributes. More...
 
#define CODES_ATTRIBUTE_NOT_FOUND   -63
 Attribute not found. More...
 
#define CODES_UNSUPPORTED_EDITION   -64
 Edition not supported. More...
 
#define CODES_OUT_OF_RANGE   -65
 Value out of coding range. More...
 
#define CODES_WRONG_BITMAP_SIZE   -66
 Size of bitmap is incorrect. More...
 

Functions

codes_indexcodes_index_new_from_file (codes_context *c, char *filename, const char *keys, int *err)
 Create a new index form a file. More...
 
codes_indexcodes_index_new (codes_context *c, const char *keys, int *err)
 Create a new index based on a set of keys. More...
 
int codes_index_add_file (grib_index *index, const char *filename)
 Indexes the file given in argument in the index given in argument. More...
 
int codes_index_get_size (codes_index *index, const char *key, size_t *size)
 Get the number of distinct values of the key in argument contained in the index. More...
 
int codes_index_get_long (codes_index *index, const char *key, long *values, size_t *size)
 Get the distinct values of the key in argument contained in the index. More...
 
int codes_index_get_double (codes_index *index, const char *key, double *values, size_t *size)
 Get the distinct values of the key in argument contained in the index. More...
 
int codes_index_get_string (codes_index *index, const char *key, char **values, size_t *size)
 Get the distinct values of the key in argument contained in the index. More...
 
int codes_index_select_long (codes_index *index, const char *key, long value)
 Select the message subset with key==value. More...
 
int codes_index_select_double (codes_index *index, const char *key, double value)
 Select the message subset with key==value. More...
 
int codes_index_select_string (codes_index *index, const char *key, char *value)
 Select the message subset with key==value. More...
 
codes_handlecodes_handle_new_from_index (codes_index *index, int *err)
 Create a new handle from an index after having selected the key values. More...
 
void codes_index_delete (codes_index *index)
 Delete the index. More...
 
int codes_count_in_file (codes_context *c, FILE *f, int *n)
 Counts the messages contained in a file resource. More...
 
grib_handle * codes_handle_new_from_file (grib_context *c, FILE *f, ProductKind product, int *error)
 Create a handle from a file resource. More...
 
grib_handle * codes_grib_handle_new_from_file (grib_context *c, FILE *f, int *error)
 Create a GRIB handle from a file resource. More...
 
grib_handle * codes_bufr_handle_new_from_file (grib_context *c, FILE *f, int *error)
 Create a BUFR handle from a file resource. More...
 
int codes_write_message (codes_handle *h, const char *file, const char *mode)
 Write a coded message to a file. More...
 
codes_handlecodes_handle_new_from_message (codes_context *c, void *data, size_t data_len)
 Create a handle from a user message in memory. More...
 
codes_handlecodes_grib_handle_new_from_multi_message (codes_context *c, void **data, size_t *data_len, int *error)
 Create a handle from a user message in memory. More...
 
codes_handlecodes_handle_new_from_message_copy (codes_context *c, const void *data, size_t data_len)
 Create a handle from a user message. More...
 
codes_handlecodes_grib_handle_new_from_samples (codes_context *c, const char *res_name)
 Create a handle from a GRIB message contained in a samples directory. More...
 
codes_handlecodes_bufr_handle_new_from_samples (codes_context *c, const char *res_name)
 Create a handle from a BUFR message contained in a samples directory. More...
 
codes_handlecodes_handle_clone (codes_handle *h)
 Clone an existing handle using the context of the original handle, The message is copied and reparsed. More...
 
int codes_handle_delete (codes_handle *h)
 Frees a handle, also frees the message if it is not a user message. More...
 
codes_multi_handlecodes_grib_multi_handle_new (codes_context *c)
 Create an empty multi-field GRIB handle. More...
 
int codes_grib_multi_handle_append (codes_handle *h, int start_section, codes_multi_handle *mh)
 Append the sections starting with start_section of the message pointed by h at the end of the multi-field GRIB handle mh. More...
 
int codes_grib_multi_handle_delete (codes_multi_handle *mh)
 Delete multi-field GRIB handle. More...
 
int codes_grib_multi_handle_write (codes_multi_handle *mh, FILE *f)
 Write a multi-field GRIB handle in a file. More...
 
int codes_get_message (codes_handle *h, const void **message, size_t *message_length)
 getting the message attached to a handle More...
 
int codes_get_message_copy (codes_handle *h, void *message, size_t *message_length)
 getting a copy of the message attached to a handle More...
 
codes_iteratorcodes_grib_iterator_new (codes_handle *h, unsigned long flags, int *error)
 Create a new iterator from a GRIB handle, using current geometry and values. More...
 
int codes_grib_get_data (codes_handle *h, double *lats, double *lons, double *values)
 Get latitude/longitude and data values. More...
 
int codes_grib_iterator_next (codes_iterator *i, double *lat, double *lon, double *value)
 Get the next value from an iterator. More...
 
int codes_grib_iterator_previous (codes_iterator *i, double *lat, double *lon, double *value)
 Get the previous value from an iterator. More...
 
int codes_grib_iterator_has_next (codes_iterator *i)
 Test procedure for values in an iterator. More...
 
int codes_grib_iterator_reset (codes_iterator *i)
 Test procedure for values in an iterator. More...
 
int codes_grib_iterator_delete (codes_iterator *i)
 Frees an iterator from memory. More...
 
codes_nearestcodes_grib_nearest_new (codes_handle *h, int *error)
 Create a new nearest from a handle, using current geometry . More...
 
int codes_grib_nearest_find (codes_nearest *nearest, codes_handle *h, double inlat, double inlon, unsigned long flags, double *outlats, double *outlons, double *values, double *distances, int *indexes, size_t *len)
 Find the 4 nearest points of a latitude longitude point. More...
 
int codes_grib_nearest_delete (codes_nearest *nearest)
 Frees an nearest from memory. More...
 
int codes_grib_nearest_find_multiple (codes_handle *h, int is_lsm, double *inlats, double *inlons, long npoints, double *outlats, double *outlons, double *values, double *distances, int *indexes)
 Find the nearest point of a set of points whose latitudes and longitudes are given in the inlats, inlons arrays respectively. More...
 
int codes_get_offset (codes_handle *h, const char *key, size_t *offset)
 Get the number offset of a key, in a message if several keys of the same name are present, the offset of the last one is returned. More...
 
int codes_get_size (codes_handle *h, const char *key, size_t *size)
 Get the number of coded value from a key, if several keys of the same name are present, the total sum is returned. More...
 
int codes_get_length (codes_handle *h, const char *key, size_t *length)
 Get the length of the string representation of the key, if several keys of the same name are present, the maximum length is returned. More...
 
int codes_get_long (codes_handle *h, const char *key, long *value)
 Get a long value from a key, if several keys of the same name are present, the last one is returned. More...
 
int codes_get_double (codes_handle *h, const char *key, double *value)
 Get a double value from a key, if several keys of the same name are present, the last one is returned. More...
 
int codes_get_double_element (codes_handle *h, const char *key, int i, double *value)
 Get as double the i-th element of the "key" array. More...
 
int codes_get_double_elements (codes_handle *h, const char *key, int *i, long size, double *value)
 Get as double array the elements of the "key" array whose indexes are listed in the input array i. More...
 
int codes_get_string (codes_handle *h, const char *key, char *mesg, size_t *length)
 Get a string value from a key, if several keys of the same name are present, the last one is returned. More...
 
int codes_get_bytes (codes_handle *h, const char *key, unsigned char *bytes, size_t *length)
 Get raw bytes values from a key. More...
 
int codes_get_double_array (codes_handle *h, const char *key, double *vals, size_t *length)
 Get double array values from a key. More...
 
int codes_get_long_array (codes_handle *h, const char *key, long *vals, size_t *length)
 Get long array values from a key. More...
 
int codes_copy_namespace (codes_handle *dest, const char *name, codes_handle *src)
 Copy the keys belonging to a given namespace from a source handle to a destination handle. More...
 
int codes_set_long (codes_handle *h, const char *key, long val)
 Set a long value from a key. More...
 
int codes_set_double (codes_handle *h, const char *key, double val)
 Set a double value from a key. More...
 
int codes_set_string (codes_handle *h, const char *key, const char *mesg, size_t *length)
 Set a string value from a key. More...
 
int codes_set_bytes (codes_handle *h, const char *key, const unsigned char *bytes, size_t *length)
 Set a bytes array from a key. More...
 
int codes_set_double_array (codes_handle *h, const char *key, const double *vals, size_t length)
 Set a double array from a key. More...
 
int codes_set_force_double_array (codes_handle *h, const char *key, const double *vals, size_t length)
 Same as codes_set_double_array but allows setting of READ-ONLY keys like codedValues. More...
 
int codes_set_long_array (codes_handle *h, const char *key, const long *vals, size_t length)
 Set a long array from a key. More...
 
void codes_dump_content (codes_handle *h, FILE *out, const char *mode, unsigned long option_flags, void *arg)
 Print all keys, with the context print procedure and dump mode to a resource. More...
 
void codes_dump_action_tree (codes_context *c, FILE *f)
 Print all keys from the parsed definition files available in a context. More...
 
codes_contextcodes_context_get_default (void)
 Get the static default context. More...
 
void codes_context_delete (codes_context *c)
 Frees the cached definition files of the context. More...
 
void codes_gts_header_on (codes_context *c)
 Set the GTS header mode on. More...
 
void codes_gts_header_off (codes_context *c)
 Set the GTS header mode off. More...
 
void codes_gribex_mode_on (codes_context *c)
 Set the GRIBEX mode on. More...
 
int codes_get_gribex_mode (codes_context *c)
 Get the GRIBEX mode. More...
 
void codes_gribex_mode_off (codes_context *c)
 Set the GRIBEX mode off. More...
 
void codes_context_set_definitions_path (grib_context *c, const char *path)
 Sets the search path for definition files. More...
 
void codes_context_set_samples_path (grib_context *c, const char *path)
 Sets the search path for sample files. More...
 
void codes_grib_multi_support_on (codes_context *c)
 Turn on support for multiple fields in single GRIB messages. More...
 
void codes_grib_multi_support_off (codes_context *c)
 Turn off support for multiple fields in single GRIB messages. More...
 
void codes_grib_multi_support_reset_file (codes_context *c, FILE *f)
 Reset file handle in multiple GRIB field support mode. More...
 
long codes_get_api_version (void)
 Get the API version. More...
 
const char * codes_get_git_sha1 (void)
 Get the Git version control SHA1 identifier. More...
 
void codes_print_api_version (FILE *out)
 Prints the API version. More...
 
codes_keys_iteratorcodes_keys_iterator_new (codes_handle *h, unsigned long filter_flags, const char *name_space)
 
int codes_keys_iterator_next (codes_keys_iterator *kiter)
 
const char * codes_keys_iterator_get_name (codes_keys_iterator *kiter)
 
int codes_keys_iterator_delete (codes_keys_iterator *kiter)
 
int codes_keys_iterator_rewind (codes_keys_iterator *kiter)
 
const char * codes_get_error_message (int code)
 Convert an error code into a string. More...
 

Detailed Description

The ecCodes C header file.

This is the only file that must be included to use the ecCodes library from C.

Function Documentation

void codes_dump_action_tree ( codes_context c,
FILE *  f 
)

Print all keys from the parsed definition files available in a context.

Parameters
f: the File used to print the keys on
c: the context that contains the cached definition files to be printed
void codes_dump_content ( codes_handle h,
FILE *  out,
const char *  mode,
unsigned long  option_flags,
void *  arg 
)

Print all keys, with the context print procedure and dump mode to a resource.

Parameters
h: the handle to be printed
out: output file handle
mode: available dump modes are: debug wmo c_code
option_flags: all the CODES_DUMP_FLAG_x flags can be used
arg: used to provide a format to output data (experimental)
long codes_get_api_version ( void  )

Get the API version.

Returns
API version

Get the API version.

Returns the version of the api as a string in the format "major.minor.revision".

Referenced by ecCodes::codes_index_get(), and ecCodes::codes_index_select().

const char* codes_get_error_message ( int  code)

Convert an error code into a string.

Parameters
code: the error code
Returns
the error message
const char* codes_get_git_sha1 ( void  )

Get the Git version control SHA1 identifier.

Returns
character string with SHA1 identifier
void codes_print_api_version ( FILE *  out)

Prints the API version.